Redirection de la sortie vers une zone de texte dans une interface graphique
Dans les interfaces utilisateur graphiques (GUI), il est courant d'afficher une sortie qui serait normalement imprimé sur la console dans une zone désignée au sein de l'interface. Cela offre une expérience plus conviviale en conservant toutes les sorties dans la fenêtre de l'application.
Pour y parvenir, vous devez rediriger le flux d'impression de votre programme vers un flux que vous pouvez contrôler dans l'interface graphique. Une approche consiste à créer un flux de sortie personnalisé qui capture la sortie et l'affiche dans la TextArea souhaitée.
Exemple de mise en œuvre
Voici un exemple de la façon de mettre en œuvre cette approche :
<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>
Dans cet exemple, un nouveau PrintStream est défini qui enveloppe la TextArea et le flux d'impression d'origine. Lorsque vous écrivez dans le nouveau flux, la sortie est envoyée à la fois à TextArea et à la console.
Pour utiliser cette implémentation, créez une instance de la classe GUIOutputRedirection, spécifiez la TextArea cible et appelez redirectOutput() méthode :
<code class="java">GUIOutputRedirection redirection = new GUIOutputRedirection(textArea); redirection.redirectOutput();</code>
Avec cette configuration en place, toute sortie qui serait normalement envoyée à la console sera désormais affichée dans la TextArea désignée dans l'interface graphique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!