首页 文章

为什么setPrefferedSize()方法不适用于JPanel?

提问于
浏览
0

我创建了n个JPanels,并在每个JPanel中添加了3个组件 . 我将这些JPanel添加到新的JPanel中作为行 . n JPanels的布局是FlowLayout,主面板是BorderLayout . setPrefferedSize()方法适用于我在n个JPanels中添加的组件,但它不适用于n个JPanels . 我正在尝试npanels [i] .setPrefferedSize(new Dimension(300,25))我希望JPanel的高度等于其中添加的组件的高度(即25) . 是否有任何约束,JPanel的高度应该是一些最小值?请帮助我尝试了很多东西,但没有工作.....

2 回答

  • 1

    setPrefferedSize()方法适用于组件

    通常不需要为组件设置优选大小 . Swing将自动计算首选大小 .

    n JPanels的布局是FlowLayout ...我在n个JPanels中添加了但是它不适用于n个JPanels

    同样,不需要设置每个面板的首选大小 . 将根据所有组件的首选大小自动计算大小 .

    主面板是BorderLayout

    这没有意义,因为您无法将“n”面板添加到BorderLayout . 您只能向North,Center和South添加一个组件,这样您最多可以拥有3个不同的垂直显示面板 . 在这种情况下,如果使用frame.pack(),则每个面板将以其首选大小显示 . 另一方面,如果使用frame.setSize(300,400),则会拉伸中心面板的高度 .

    因为看起来你想要所有面板大小相同你可能应该使用GridLayout,否则你可以尝试BoxLayout . 阅读Swing教程 . 它解释了使用布局管理器的所有内容 .

    如果您需要更多帮助,请发布SSCCE .

  • 1

    一些布局管理员倾向于忽略大小设置......

    读取BorderLayout可能倾向于忽略 widthNORTHSOUTH 组件的某处, heightEASTWESTheightwidth 都被忽略 CENTER ...

    可能是这种情况吗?

    另外,你能提供截图或解释发生什么的图表吗?

相关问题