我想显示JDialog
,所以我使用它:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() { new DialogBox().setVisible(true); }
});
它可以很好地显示它但是我的JDialog
没有保持焦点,它需要(用户不能在该对话框打开时使用主UI工作)。
摆脱SwingUtilities.invokeLater()
是否安全?
哦,根据this question,扩展JDialog或JFrame是不明智的,为什么?这就是我一直以来的做法。
答案 0 :(得分:1)
对于父级,或者来自当前JVM的所有窗口,它可以很好地显示它,但然后我的JDialog没有保留 焦点,它需要(用户不应该使用 该对话框打开时的主UI。
必须为setModal(true)或setModalityTypes(various types)
Is it safe to get rid of the SwingUtilities.invokeLater()
确切地说,应该在Top-Level Container上创建所有EDT, wrapped in invokeLater(),包括JOptionPane