JEditorPane
ユーザーが Java コードを入力してコンパイルできるプログラムを設計しています。その後、新しいプロセスでプログラムを実行できます。出力はJTextArea
. これをメンバーとして拡張JTextArea
および追加することでこれを実現します。
private OutputStream writer = new OutputStream() {
public void write(int b) {
Console.this.append(String.valueOf((char) b));
}
};
次に、 thisを a でラップしgetStream()
て返す単純なメソッドを用意し、 andをで呼び出します。OutputStream
PrintWriter
System.setOut()
System.setErr()
PrintWriter
ここで問題が発生します。大量の出力が一度にコンソールに送信されるプログラムをユーザーがコンパイルすると (System.out.println()
呼び出しの無限ループなど)、GUI 全体がハングします。を使用して呼び出しSwingWorker
を処理することでこれを修正しようとしましたが、何も機能していないようです。append()
に大量のテキストが書き込まれている場合でも、GUI の応答性を維持する方法はありJTextArea
ますか? 問題の一部は、呼び出し後に GUI を更新するのにかかる時間であると想定していappend()
ます。JTextArea
ユーザーがボタンをクリックしてプロセスを終了できるように、への書き込みを少し遅らせる方法はありますか?