自动更新JFrame大小以适应新组件添加

4
我有一个包含JPanel的JFrame(使用Window Builder Pro时的默认设置)。在我的代码中,我添加了一个新的JPanel,但外部JFrame无法调整大小以适应新的组件。因此,我不得不手动拖动。

这里是一张截图:

enter image description here

如何使无论我在其中放什么,JFrame都会自动更新其大小以适应新的Swing组件?


抱歉,我是指可见的JFrame。 - J86
3个回答

5
在添加新组件后,尝试调用。
frame.pack() 

在外部框架上调用pack方法,该方法将根据其底层组件的大小设置框架的大小。实际上,这是Window类的一个方法,文档可以在此处找到。
如果您没有对Window / Frame的引用,一种简单的方法是在面板添加后调用SwingUtilities.getWindowAncestor()。

我在添加新的面板时,无法访问原始的JFrame对象。是否有其他方法可以获取它?还是必须将其作为参数传递? - J86
如果您没有引用,可以参考上面的示例来获取引用。 - JohnnyO

2
通常调整包含本地窗口、框架或对话框大小以适应其内容的方法是使用 pack。请参见此处的示例。如果您需要从轻量级子组件访问框架等,则可以使用以下方法获取它:
JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);

2
我不知道如何在WindowsBuilder中实现这一点,但是运行时只需在框架上调用pack即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接