java - 添加新组件时更新(和扩展)对话框

标签 java swing layout

我有 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/

相关文章:

java - 正确的 JFrame 组件,用于查看输入的数据,并在加载时正确查看布局

java - 不同的外观和感觉是否能够使用不同的初始组件属性?

forms - ExtJS - 在 FormPanel 列布局中排列表单元素

使用 ssh 和 ssl 的 java mongodb 连接

java - DomainClassConverter 在 Spring Boot 中不起作用

java - 将低端口绑定(bind)到 Ubuntu 服务器上的 Java 程序

java - Swing:如果在数字键盘上按下数字,则 Ctrl+数字的操作无法正常工作

wpf - 自动调整 WPF 窗口大小

android - 在 android 布局编辑器中,当我单击任何 View 时,属性 View 不会更新

java - 如何在 java 中使用 FirebaseListAdapter 从 firebase 数据库中读取子项?