JPanel 尺寸(按内部组件)
2022-09-01 23:20:56
是否可以告诉JPanel设置其大小以适合它包含的所有组件?就像JFrame一样。pack()
编辑:首选大小技巧没有帮助。我有JSplitPane,其中一部分是GridBagLayout,其中包含许多标签(见屏幕截图),标签相互重叠。
是否可以告诉JPanel设置其大小以适合它包含的所有组件?就像JFrame一样。pack()
编辑:首选大小技巧没有帮助。我有JSplitPane,其中一部分是GridBagLayout,其中包含许多标签(见屏幕截图),标签相互重叠。
在查看了 的源代码后,我想出了:pack()
panel.setPreferredSize(panel.getPreferredSize());
这将强制面板根据其子组件的首选大小重新计算其首选大小。
之后,您可能不必调用 validate();
在我的小例子中,它似乎没有区别,但Javadoc说:
该方法用于使容器再次布置其子组件。在显示容器后,当修改此容器的子组件(添加到容器中或从容器中删除,或更改与布局相关的信息)时,应调用它。
validate
所以我想这取决于为什么你必须重新包装你的.JPanel
默认情况下,s 具有与容器给定的首选布局大小匹配的首选大小。因此,从字面上看,您所要做的就是:Container
panel.setSize(panel.getPreferredSize());
据推测,您正在对父级执行一些奇怪的操作,以阻止父级的布局管理器执行等效操作。