Как получить вывод на экран во время действия? (Джава) - PullRequest
0 голосов
/ 26 февраля 2010

У меня есть Java-программа, в которой инициируется действие, которое просматривает список элементов, выполняет некоторые вычисления для данных и выполняет другие задачи. Процесс занимает около 10 минут, но я хотел бы вывести результаты для каждого элемента в списке, поскольку обработка этого элемента завершена. Выходные данные представляют собой набор элементов, записанных в ячейки таблицы. Также есть индикатор выполнения, который не обновляется, пока не завершится все действие.

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

Я видел процедуры обновления на других языках, чтобы обойти это. Разрешает ли Java такое обновление?

Заранее спасибо за любую помощь в этом.

Ответы [ 3 ]

3 голосов
/ 26 февраля 2010

Да, Java допускает обновление графического интерфейса во время выполнения долго выполняющихся процессов. Взгляните на понятия, касающиеся параллелизма в Swing и SwingWorker класса для некоторого фона.

Выходные данные представляют собой набор элементов, записанных в ячейки таблицы. Также имеется индикатор выполнения, который не обновляется, пока не завершится все действие.

Причина, по которой вы не обновляете свои виджеты, заключается в том, что, скорее всего, вы выполняете длительный процесс в потоке рисования одинокого Swing. Это остановит обновление вашего GUI до завершения процесса.

Для более точной диагностики, пожалуйста, отправьте код.

1 голос
/ 26 февраля 2010

Вы можете выделить рабочих потоков для выполнения различных процессов.

0 голосов
/ 26 февраля 2010

Попробуйте System.out.flush(); после использования System.out.println(); для написания сообщения. Это приведет к выводу потока на экран.

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