2

我想显示一个JDialog所以我用这个:

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() { new DialogBox().setVisible(true); }
});

它可以很好地显示它,但是我JDialog没有保持焦点,这是它需要的(当该对话框打开时,用户不应该能够使用主 UI 工作)。

摆脱它是否安全SwingUtilities.invokeLater()

哦,根据这个问题,扩展 JDialog 或 JFrame 是不明智的,为什么?这就是我一直这样做的方式。

4

1 回答 1

1

它可以很好地显示它,但是我的 JDialog 没有保持焦点,这是它需要的(当该对话框打开时,用户不应该能够使用主 UI 工作)。

必须为父级或当前 JVM 的所有窗口设置模式(true)设置模式类型(各种类型)

Is it safe to get rid of the SwingUtilities.invokeLater()

是的,所有顶级容器都应该在EDT 上创建,包装在 invokeLater()中,包括JOptionPane

于 2013-04-17T21:10:02.383 回答