添加新组件后自动更新JFrame大小

时间:2013-04-18 20:54:10

标签: java swing jframe jpanel

我有一个内置JPanel的JFrame(使用Window Builder Pro时的默认内容)。在我的代码中,我添加了一个新的JPanel,但外部JFrame无法重新调整大小以适应新组件。所以我必须手动拖动。

以下是截图:

enter image description here

我怎样才能做到这一点,无论我放在哪里,JFrame都会自动更新其大小以适应新的Swing组件?

3 个答案:

答案 0 :(得分:5)

添加新组件后,尝试调用

frame.pack() 

在封闭框架上。 pack方法将根据其底层组件的大小设置框架的大小。这实际上是Window类的一种方法,文档可用here

如果你没有方便的窗口/框架参考,一个简单的方法是打电话 后面板 上的SwingUtilities.getWindowAncestor()已添加。

答案 1 :(得分:2)

如何在WindowBuilder中实现这一点我不能说,但在运行时,只需在框架上调用pack

答案 2 :(得分:2)

重塑封闭原生窗口,框架或对话框以适合其内容的常用方法是pack。见the example here。如果您需要访问例如来自轻量级孩子的框架,您可以使用

获取它
JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);