2010-03-06 88 views
0

我已经创建了n个JPanel,并且在每个JPanel中添加了3个组件。我将这些JPanel作为行添加到新的JPanel中。 n个JPanel的布局是FlowLayout,主面板是BorderLayout。 setPreferredSize()方法对于我在n个JPanel中添加的组件而言工作正常,但它不适用于n个JPanel。我想要npanels [i] .setPrefferedSize(新维(300,25)) 我想JPanel的高度等于其中添加的组件的高度(这是25)。 是否有约束,高度的JPanel应该是一些最小值? 请帮我尝试了很多东西,但没有工作.....为什么setPrefferedSize()方法不适用于JPanel?

回答

1

一些布局管理器往往忽视了尺寸设置...

读的地方,BorderLayout的可能往往忽视了对widthNORTHSOUTH组件, heightEASTWEST, 都heightwidthCENTER被忽略......

可能是这种情况?

此外,你可以提供一个截图或图解释发生了什么?

+0

添加屏幕截图给我5分钟 – stillStudent 2010-03-06 06:03:54

+0

但我无法找到任何选项来添加图像... 你能帮我吗? – stillStudent 2010-03-06 06:10:13

+0

“图像”图标看起来像一张图片;它是从左边第六个;另请参阅http://stackoverflow.com/editing-help – trashgod 2010-03-06 17:32:09

1

的setPrefferedSize()方法是用于部件

工作正常通常没有必要设置一个优选的大小的部件。 Swing会自动计算首选大小。

布局对于n JPanels是FlowLayout中... 我在正JPanels增加了,但它 不工作当n JPanels

同样,也没有必要设置的首选大小每个面板。大小将根据所有组件的首选大小自动计算。

主面板是BorderLayout

这是没有意义的,因为你不能添加“N”面板的BorderLayout的。您只能在北部,中部和南部添加一个组件,因此最多可以有3个不同的垂直显示面板。在这种情况下,如果使用frame.pack(),则每个面板都将以其首选大小显示。另一方面,如果使用frame.setSize(300,400),则中心面板的高度将被拉伸。

既然看起来你想要所有面板的大小相同,你可能应该使用GridLayout,否则你可以试试BoxLayout。阅读Swing教程。它解释了使用布局管理器的所有信息。

如果您需要更多帮助,请发送您的SSCCE

相关问题