如果我在 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 中实例化并运行线程并不重要。它将是一个新线程,独立于 EDT 运行,因此从中修改 GUI 是不安全的。所有 Swing 修改都必须使用 invokeLater()
完成。
关于java - 我应该在 EDT 中创建的线程内调用 InvokeLater 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32768154/