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

Java 为什么setPreferedSize()方法不适用于JPanel?,java,swing,Java,Swing,我已经创建了n个JPanel,并且在每个JPanel中添加了3个组件。我将这些JPanel作为行添加到一个新的JPanel中。n JPanel的布局为FlowLayout,主面板的布局为BorderLayout。setPreferedSize()方法对于我在n JPanels中添加的组件运行良好,但对于n JPanels不起作用。 我正在尝试npanels[i].setPreferedSize(新维度(300,25)) 我希望JPanel的高度等于添加到其中的组件的高度(25)。 JPanel的

我已经创建了n个JPanel,并且在每个JPanel中添加了3个组件。我将这些JPanel作为行添加到一个新的JPanel中。n JPanel的布局为FlowLayout,主面板的布局为BorderLayout。setPreferedSize()方法对于我在n JPanels中添加的组件运行良好,但对于n JPanels不起作用。 我正在尝试npanels[i].setPreferedSize(新维度(300,25)) 我希望JPanel的高度等于添加到其中的组件的高度(25)。 JPanel的高度应该是某个最小值,这有什么限制吗?
请帮助我,我尝试了很多东西,但都不起作用….

一些版面管理员往往会忽略大小设置

阅读某个地方,BorderLayout可能会忽略
北部
南部
组件的
宽度
高度
对于
东部
西部
, 对于
中心
,高度和宽度都被忽略

会是这样吗

另外,你能提供一个屏幕截图或图表来解释发生了什么吗

setPreferedSize()方法是 部件工作正常

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

n JPanel的布局是FlowLayout。。。 我在n JPanels中添加了它,但是 不适用于n JPanels

同样,无需设置每个面板的首选尺寸。尺寸将根据所有组件的首选尺寸自动计算

主面板是边界布局

这没有意义,因为无法将“n”面板添加到BorderLayout。只能将一个构件添加到北部、中部和南部,这样最多可以有3个不同的垂直显示面板。在这种情况下,如果使用frame.pack(),则每个面板将以其首选大小显示。另一方面,如果使用frame.setSize(300400),则中间面板的高度将被拉伸

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


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

添加屏幕截图给我5分钟,但我在这里找不到任何添加图像的选项。。。你能帮我吗?“图像”图标看起来像一张图片;在左边第六个;另见