【发布时间】:2015-09-24 18:10:58
【问题描述】:
如果我在 edt 中创建的线程中修改我的 gui 会发生什么?
当我说“在 edt 中创建”时,我实际上是在说线程声明及其开始位于以下代码块中:
SwingUtilities.invokeLater(new Runnable(){
public void run(){
Thread t= new Thread(new Runnable(){
public void run(){
txtField.setText("setting...");
}
});
t.start();
}
}
这会在没有副作用的情况下修改我的 gui 吗?还是我应该在线程“T”内再次调用invokeLater?
【问题讨论】:
-
它是与 EDT 不同的线程,因此从它修改 swing 组件是不安全的。所以是的,如果您需要访问 Swing 组件,您应该在
t中调用invokeLater()。
标签: java multithreading swing user-interface event-dispatch-thread