Ausgabe in eine TextArea in einer GUI umleiten
In grafischen Benutzeroberflächen (GUIs) ist es üblich, Ausgaben anzuzeigen, die normalerweise so wären wird in einem dafür vorgesehenen Bereich innerhalb der Benutzeroberfläche auf der Konsole gedruckt. Dies sorgt für eine benutzerfreundlichere Erfahrung, da die gesamte Ausgabe innerhalb des Anwendungsfensters bleibt.
Um dies zu erreichen, müssen Sie den Druckstream Ihres Programms auf einen Stream umleiten, den Sie innerhalb der GUI steuern können. Ein Ansatz besteht darin, einen benutzerdefinierten Ausgabestream zu erstellen, der die Ausgabe erfasst und im gewünschten Textbereich anzeigt.
Implementierungsbeispiel
Hier ist ein Beispiel für die Implementierung dieses Ansatzes:
<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>
In diesem Beispiel wird ein neuer PrintStream definiert, der die TextArea und den ursprünglichen Druckstream umschließt. Wenn Sie in den neuen Stream schreiben, wird die Ausgabe sowohl an die TextArea als auch an die Konsole gesendet.
Um diese Implementierung zu verwenden, erstellen Sie eine Instanz der GUIOutputRedirection-Klasse, geben Sie die Ziel-TextArea an und rufen Sie restartOutput() auf. Methode:
<code class="java">GUIOutputRedirection redirection = new GUIOutputRedirection(textArea); redirection.redirectOutput();</code>
Mit dieser Einrichtung wird jede Ausgabe, die normalerweise an die Konsole gehen würde, jetzt im dafür vorgesehenen Textbereich innerhalb der GUI angezeigt.
Das obige ist der detaillierte Inhalt vonWie leite ich die Konsolenausgabe in eine TextArea in einer GUI um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!