Захват данных System.out.println или stdout в служебную заметку (огромные данные) - PullRequest
1 голос
/ 11 июня 2011

Привет, мне нужно показать результат в заметке, а не с помощью System.out.println, но я не могу, например, поместить stdout в список и после отображения содержимого этого списка в памятке свинга, потому что отображать каждую строку результата в режиме реального времени или при его отображении.

Я думаю, что-то, что работает как наблюдатель System.out.println, и когда некоторые данные или информация были напечатаны в консоли, я хочу иметь возможность захватить их и отобразить в заметке.

Для лучшего понимания я выполняю некоторые команды удаленно на сервере Unix и извлекаю результаты этих команд в стандартный вывод и вычисляю с ними некоторое время и метрики, и определенно мне нужно сделать это таким образом, чтобы моделировать поведение удаленное приложение.

Решением может быть способ показать каждую строку или каждый элемент в списке в заметке точно в то время, когда она создается.

А свинг-заметка может иметь дело с большими строками, более 500 КБ или более 1 МБ?

Потому что весь результат, напечатанный в sdtout в моем ID, действительно огромен.

Thx

Ответы [ 2 ]

5 голосов
/ 11 июня 2011

См. Консоль сообщений , для которой в описании указано:

Могут быть случаи, когда вы хотите захватить вывод из вашей программы и отобразить его для пользователя. Обычно это делается путем создания консоли. Используя Swing, не так уж сложно создать простую консоль с использованием JTextArea или JTextPane. Наша консоль сообщений сможет отображать вывод, записанный в System.out и System.err. ..

Скриншот консоли сообщений

Форма JTextPane Консоли сообщений в режиме append.

enter image description here

(Снимок экрана получен из связанной статьи в блоге Роба Камика "Java Tips Weblog".)

3 голосов
/ 11 июня 2011

Вы можете найти то, что ищете здесь :

Веб-страница на французском языке, но все еще кодовая, достаточно ясная и в java.

В основном,они используют потоки для чтения из 2 PipedOutputStream.Один из них подключен к System.out, второй подключен к System.err.Когда что-то доступно в одном из pipedOutputStream, они записывают это в виджет.

...