我正在尝试了解将从事件调度线程(EDT)管理哪些事件。
让我们假设一些简单的东西,一段简单的代码,简单地打开一个JOptionPane,等待用户的响应,然后关闭它。与此对象相关的事件现在放在EDT上?是吗: a)只是创建对象(JOptionPane)。 b)对象生命周期内的所有对象相关事件。 C)其他(请注明)。
谢谢,
埃利奥特
见下文:
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run(){
JOptionPane.showMessageDialog(myComponent, msg);
}
});
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:2)
据我所知,以下所有“事件”都将在EDT中执行:
SwingUtilities.invokeAndWait()
或SwingUtilities.invokeLater()
调用的任何代码。答案 1 :(得分:1)
所有JOptionPane
对话框都是模态的:它们阻止用户生成的输入事件到其他窗口,但EventQueue
继续处理所有窗口的事件。在此DialogTest
中,动画在JOptionPane.showMessageDialog()
等待输入时继续。有一个相关的讨论here。