如果我在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而没有副作用吗?或者我应该在Thread“T”中再次调用invokeLater?
答案 0 :(得分:3)
在EDT中实例化和运行线程无关紧要。它将是一个独立于EDT运行的新线程,因此从它修改GUI是不安全的。必须使用invokeLater()
完成所有Swing修改。