【发布时间】:2013-04-17 20:49:21
【问题描述】:
我想显示JDialog,所以我使用这个:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() { new DialogBox().setVisible(true); }
});
它可以正常显示,但是我的JDialog 没有保持焦点,这是它需要的(用户应该无法在该对话框打开时使用主 UI 工作)。
删除SwingUtilities.invokeLater() 是否安全?
哦,根据this question,扩展 JDialog 或 JFrame 是不明智的,为什么?这就是我一直这样做的方式。
【问题讨论】:
-
你不想要一个模态对话框吗?
-
扩展 JDialog 或 JFrame 归结为设计。您实际上向这些顶级容器添加了哪些功能?这里还需要考虑的是,如果您直接在这些顶级容器之一之上构建您的 UI,那么您将来会限制您的 UI 组件的使用。最好扩展 JPanel 之类的东西,在此基础上构建您的 UI,提供所需的访问器并将其放置在所需顶级容器的实例之上
标签: java multithreading swing user-interface jdialog