現在、私は常にSwingWorker
実際の作業を行うためにを作成し、を介して出力を処理するために別のを作成していPipedReader
ます。
この2つを組み合わせたいのですが、私の状況では、簡単な方法がわかりません。
私を考えると:
- 動作する既成のオブジェクトを用意します(
converter
この場合は) converter
GUIへの進行状況に関する更新を定期的に表示したいconverter
タスクを終了して戻るときにオブジェクトを受け取ります。
2人のSwingWorkerなしでこれを行う方法はありますか?
編集: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());
}
}