我创建了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的高度应该是一些最小值? 请帮助我尝试了很多东西,但没有工作.....
答案 0 :(得分:1)
某些布局管理员倾向于忽略尺寸设置......
在某处读取BorderLayout可能会忽略width
和NORTH
组件的SOUTH
,
height
和EAST
的{{1}},
WEST
...
height
和width
可能是这种情况吗?
另外,您能提供解释发生什么的截图或图表吗?
答案 1 :(得分:1)
setPrefferedSize()方法是 工作正常的组件
通常无需为组件设置首选大小。 Swing会自动计算首选大小。
n JPanels的布局是FlowLayout ... 我已添加到JPanels但它 不适用于n JPanels
同样,不需要设置每个面板的首选大小。将根据所有组件的首选大小自动计算大小。
主面板是BorderLayout
这没有意义,因为您无法将“n”面板添加到BorderLayout。您只能向North,Center和South添加一个组件,这样您最多可以拥有3个不同的垂直显示面板。在这种情况下,如果使用frame.pack(),则每个面板将以其首选大小显示。另一方面,如果你使用frame.setSize(300,400),那么中心面板的高度将被拉伸。
由于您希望所有面板都具有相同的尺寸,您可能应该使用GridLayout,否则您可以尝试使用BoxLayout。阅读Swing教程。它解释了使用布局管理器的所有内容。
如果您需要更多帮助,请发布SSCCE。