4
與swing工作人員交互EDT的常用方法是使用get()方法。但我有一個長期的任務,這樣的代碼:我應該使用SwingWorker.doInBackground()裏面的SwingUtilities.invokeLater()嗎?
public Void doInBackground() {
for(Object o : objects) {
doSomething();
MyGlobalGUIConsole.addMessage("Done for " + o);
}
}
在大多數tutotials建議使用返回值得到的東西從SwingWorker的到美國東部時間回來,但我能不能:
public Void doInBackground() {
for(Object o : objects) {
doSomething();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MyGlobalGUIConsole.addMessage("Done for " + o);
}
});
}
}
@AvrDragon用法是錯誤的觀念,是有關從MyGlobalGUIConsole.addMessage()包裝內容到invokerLater(),而不是在SwingWorker的,因爲過程()可以正確通知EDT – mKorbel 2012-08-10 08:20:50