【问题标题】:Update JFrame size automatically after addition of new components添加新组件后自动更新 JFrame 大小
【发布时间】:2013-04-12 03:41:26
【问题描述】:

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

这是截图:

我怎样才能让无论我在其中放入什么,JFrame 都会自动更新其大小以适应新的 Swing 组件?

【问题讨论】:

  • 对不起,我的意思是 Visible JFrame,是的。

标签: java swing jframe jpanel


【解决方案1】:

添加新组件后,尝试调用

frame.pack() 

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

如果您手边没有对 Window/Frame 的引用,一个简单的方法是调用 SwingUtilities.getWindowAncestor() 在面板上被添加之后。

【讨论】:

  • 在我添加新面板的地方,我无法访问原始 JFrame 对象。还有其他方法可以解决吗?还是我必须将其作为参数传递?
  • 参见上面的编辑示例,如果您没有参考,如何获得参考。
【解决方案2】:

如何在WindowsBuilder中实现这个我不能说,但是在运行的时候,只需在框架上调用pack

【讨论】:

    【解决方案3】:

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

    JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 2011-05-01
      相关资源
      最近更新 更多