Как перенаправить весь консольный вывод в текстовое поле GUI? - PullRequest
9 голосов
/ 19 февраля 2009

В настоящее время у меня есть программа, которая печатает строки текста на экране различными способами, такими как операторы System.out.println (), и for зацикливает вывод всех элементов массива на экран.

Я сейчас добавляю графический интерфейс к этой программе. Моя проблема в том, что я хочу напечатать все, что печатает на консоли затмения, вместо текстового поля в моем графическом интерфейсе. Возможно ли это, и если да, то как мне поступить?

Заранее спасибо.

Ответы [ 2 ]

21 голосов
/ 19 февраля 2009

Ознакомьтесь с этой статьей блога под названием Перенаправление System.out и System.err на JTextPane или JTextArea Он описывает почти все, что вам нужно.

Основная идея заключается в том, что вы создаете свой собственный специализированный поток вывода. При реализации методов write() вы вызываете некоторый код для добавления новых данных в текстовое поле. Затем вы устанавливаете этот новый выходной поток как System.out, вызывая System.setOut() или System.setErr().

ПРИМЕЧАНИЕ: в этой статье отсутствует одна вещь. Вам нужно запустить вашу программу в отдельном потоке .

7 голосов
/ 19 февраля 2009

Идея:

Создайте свой собственный PrintStream, который выводит все в это текстовое поле. Затем установите для этого нового PrintStream поток стандартный , например:

System.setOut(myPrintStream());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...