使用SwingUtilities.invokeLater继续关注JDialog?

时间:2013-04-17 20:49:21

标签: java multithreading swing user-interface jdialog

我想显示JDialog,所以我使用它:

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

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

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

哦,根据this question,扩展JDialog或JFrame是不明智的,为什么?这就是我一直以来的做法。

1 个答案:

答案 0 :(得分:1)

  

它可以很好地显示它,但然后我的JDialog没有保留   焦点,它需要(用户不应该使用   该对话框打开时的主UI。

对于父级,或者来自当前JVM的所有窗口,

必须为setModal(true)setModalityTypes(various types)

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

确切地说,应该在Top-Level Container上创建所有EDT, wrapped in invokeLater(),包括JOptionPane