ホームページ >Java >&#&チュートリアル >コンソール出力を GUI の TextArea にリダイレクトするにはどうすればよいですか?

コンソール出力を GUI の TextArea にリダイレクトするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 17:18:29491ブラウズ

How to Redirect Console Output to a TextArea in a GUI?

GUI の TextArea への出力のリダイレクト

グラフィカル ユーザー インターフェイス (GUI) では、通常は次のように出力される出力を表示するのが一般的です。インターフェイス内の指定された領域のコンソールに出力されます。これにより、すべての出力がアプリケーション ウィンドウ内に保持されるため、よりユーザー フレンドリーなエクスペリエンスが提供されます。

これを実現するには、プログラムの印刷ストリームを GUI 内で制御できるストリームにリダイレクトする必要があります。 1 つのアプローチには、出力をキャプチャして目的の TextArea に表示するカスタム出力ストリームの作成が含まれます。

実装例

このアプローチを実装する方法の例を次に示します。

<code class="java">public class GUIOutputRedirection {

    private TextArea textArea;
    private PrintStream originalPrintStream;

    public GUIOutputRedirection(TextArea textArea) {
        this.textArea = textArea;
        originalPrintStream = System.out;
    }

    public void redirectOutput() {
        PrintStream stream = new PrintStream(new OutputStream() {

            @Override
            public void write(byte[] b, int off, int len) {
                String text = new String(b, off, len);
                textArea.append(text);
                originalPrintStream.write(b, off, len);
            }

            @Override
            public void write(byte[] b) {
                write(b, 0, b.length);
            }

            @Override
            public void write(int b) {
                byte[] b1 = new byte[1];
                b1[0] = (byte) b;
                write(b1, 0, 1);
            }
        });

        System.setOut(stream);
    }

    // ...
}</code>

この例では、TextArea と元の印刷ストリームをラップする新しい PrintStream が定義されています。新しいストリームに書き込むと、出力は TextArea とコンソールの両方に送信されます。

この実装を使用するには、GUIOutputRedirection クラスのインスタンスを作成し、ターゲット TextArea を指定して、redirectOutput() を呼び出します。 method:

<code class="java">GUIOutputRedirection redirection = new GUIOutputRedirection(textArea);
redirection.redirectOutput();</code>

この設定を行うと、通常はコンソールに送られる出力が GUI 内の指定された TextArea に表示されるようになります。

以上がコンソール出力を GUI の TextArea にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。