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をで呼び出します。OutputStreamPrintWriterSystem.setOut()System.setErr()PrintWriter
ここで問題が発生します。大量の出力が一度にコンソールに送信されるプログラムをユーザーがコンパイルすると (System.out.println()呼び出しの無限ループなど)、GUI 全体がハングします。を使用して呼び出しSwingWorkerを処理することでこれを修正しようとしましたが、何も機能していないようです。append()
に大量のテキストが書き込まれている場合でも、GUI の応答性を維持する方法はありJTextAreaますか? 問題の一部は、呼び出し後に GUI を更新するのにかかる時間であると想定していappend()ます。JTextAreaユーザーがボタンをクリックしてプロセスを終了できるように、への書き込みを少し遅らせる方法はありますか?