我有 JDialog 窗口,用户可以在其中使用“+”旋钮手动添加组件。
我希望每次添加后自动调整窗口大小。
pack()
在对话框设置为可见之前起作用。但它已经可见,它不会改变窗口尺寸。
有没有替代/补充的方法来pack()
?
亲切的问候,
最佳答案
Is there a alternate/complementary way to pack() ?
不,请使用pack()
,因为这是唯一一个不仅会重新布局组件而且会调整包含的顶级窗口(此处为 JDialog)的大小的调用。
But it is already visible, it doesn't change de windows dimension.
窗口是否已经可见并不重要。如果在可视化的顶级窗口上调用pack()
(一个很大的if),那么它将改变窗口的尺寸,如果你的GUI 正确使用布局管理器。如果您的布局没有被更改,那么您可能没有在正确的引用上调用此方法,或者没有以良好的方式使用布局,在这种情况下,您将需要向我们展示相关代码。
你的问题引出了另一个问题——为什么不使用pack()
?如果是因为对 JDialog 所持有的 JPanel 进行了更改,那么您始终可以使用 SwingUtilities.getWindowAncestor(Component c) 获取对话框或保存 JPanel(或任何组件)的任何顶级窗口
.
关于java - 添加新组件时更新(和扩展)对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465663/