SwingWorkerを使用するときに配信を保証する適切な方法は何ですか?InputStreamからJTextAreaにデータをルーティングしようとしていますが、このexecute
メソッドを使用してSwingWorkerを実行しています。私はここの例に従っていると思いますが、結果が乱れ、重複し、一般的に意味がありません。
これが私の機能していないSwingWorkerです:
class InputStreamOutputWorker extends SwingWorker<List<String>,String> {
private InputStream is;
private JTextArea output;
public InputStreamOutputWorker(InputStream is, JTextArea output) {
this.is = is;
this.output = output;
}
@Override
protected List<String> doInBackground() throws Exception {
byte[] data = new byte[4 * 1024];
int len = 0;
while ((len = is.read(data)) > 0) {
String line = new String(data).trim();
publish(line);
}
return null;
}
@Override
protected void process( List<String> chunks )
{
for( String s : chunks )
{
output.append(s + "\n");
}
}
}