目前我總是創建一個SwingWorker
來完成我的實際工作,另一個通過PipedReader
來處理輸出。SwingWorker for Both輸出和工作,或每個?
我很樂意將這兩者結合起來,但在我的情況下,我只是沒有看到一個簡單的方法來做到這一點。
鑑於我:
- 有一個預製的對象沒有工作(
converter
,在這種情況下) - 要經常顯示在
converter
的進步更新到GUI - 接收
converter
完成任務並返回時的對象。
有沒有辦法做到這一點,沒有兩個SwingWorkers?
編輯:請注意,製作converter
擴展SwingWorker
不是一個選項。
編輯2:迴應以下評論。這是一個更大的GUI應用程序的一部分,處理大塊數據(以txt的形式)並通知用戶出了什麼問題,或者已經決定了什麼。
示例代碼(純粹是說明性的,不使用):
//SwingWorker 1
@Override
protected Void doInBackground() {
outputWorker.useInStream(new PipedReader(outStream));
outputWorker.execute();
converter.usePipedWriter(outStream);
Output object2=converter.Convert(object1);
}
//SwingWorker 2
@Override
protected Void doInBackground() {
while(inStream.hasNext()) {
publish(inStream.next());
}
}
爲什麼你需要一個SwingWorker的呢?這是否觸及任何用戶界面? – ControlAltDel 2012-04-20 16:05:23
@ user1291492是的。處理30 MB的文本文件,並讓用戶看到做出了什麼決定。 – Sheriff 2012-04-20 16:06:22