内部组件的JPanel大小

Jak*_*old 19 java user-interface swing

是否可以告诉JPanel将其大小设置为适合它包含的所有组件?类似于pack()JFrame的东西.

编辑:使用preferredSize的技巧没有帮助.我有JSplitPane,其中一部分是GridBagLayout,有许多标签(见截图),标签相互重叠.

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

Mic*_*ers 19

看完源代码之后pack(),我想出了:

    panel.setPreferredSize(panel.getPreferredSize());
Run Code Online (Sandbox Code Playgroud)

这迫使面板根据其子组件的优选尺寸重新计算其优选尺寸.

您可能会或可能不会在validate()之后打电话; 在我的小例子中,似乎没有任何区别,但Javadoc说:

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

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