JPanel 尺寸(按内部组件)

2022-09-01 23:20:56

是否可以告诉JPanel设置其大小以适合它包含的所有组件?就像JFrame一样。pack()

编辑:首选大小技巧没有帮助。我有JSplitPane,其中一部分是GridBagLayout,其中包含许多标签(见屏幕截图),标签相互重叠。

屏幕截图 http://foto.darth.cz/pictures/screen.png


答案 1

在查看了 的源代码后,我想出了:pack()

    panel.setPreferredSize(panel.getPreferredSize());

这将强制面板根据其子组件的首选大小重新计算其首选大小。

之后,您可能不必调用 validate();在我的小例子中,它似乎没有区别,但Javadoc说:

该方法用于使容器再次布置其子组件。在显示容器后,当修改此容器的子组件(添加到容器中或从容器中删除,或更改与布局相关的信息)时,应调用它。validate

所以我想这取决于为什么你必须重新包装你的.JPanel


答案 2

默认情况下,s 具有与容器给定的首选布局大小匹配的首选大小。因此,从字面上看,您所要做的就是:Container

panel.setSize(panel.getPreferredSize());

据推测,您正在对父级执行一些奇怪的操作,以阻止父级的布局管理器执行等效操作。


推荐