从 swing worker 与 EDT 交互的常用方法是使用 get() 方法。但我有一个很长的任务和这样的代码:
public Void doInBackground() {
for(Object o : objects) {
doSomething();
MyGlobalGUIConsole.addMessage("Done for " + o);
}
}
在大多数教程中,建议使用返回值从 SwingWorker 将某些内容返回到 EDT,但我可以:
public Void doInBackground() {
for(Object o : objects) {
doSomething();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MyGlobalGUIConsole.addMessage("Done for " + o);
}
});
}
}