Вывод в jTextArea данные из System.out.println в режиме реального времени

 
 
 
Сообщения:17
Добрый день, коллеги!

Устал бороться с EDT в Swing GUI.
Помогите пожалуйста?!

Необходимо после того, как пользователь заполнил форму и нажал на кнопку, в момент выполнения ActionPerformed выводить в режиме реального времени логи в jTextArea.
Нашел пример здесь - https://www.researchgate.net/post/print_the_output_of_a_processbuilder_in_a_java_TextArea_during_its_execution
Он отлично работает, но если вызвать эту консоль при нажатии на кнопку, логи выводятся только после завершения работы ActionPerformed.

Бьюсь с этим уже третий день и никак не получается победить.

Заранее благодарю за помощь!
 
 
Сообщения:858
классическая ошибка - долгие вычисления в слушателе.
 
 
Сообщения:17
windruf:
классическая ошибка - долгие вычисления в слушателе.

Спасибо за ответ!

Как с этим бороться?
Я так понимаю нужно высвободить EDT и после уже запускать вычисления.
Создал переменные и присвоил всем переменным значения полей формы.

Как высвободить EDT после присвоения переменным данных? И как продолжить выполнение после высвобождения?
 
 
Сообщения:858
выкинь вычисления в отдельный тред.
будь осторожен: свинг и многопоточность это немного посложнее.
 
 
Сообщения:17
windruf:
выкинь вычисления в отдельный тред.
будь осторожен: свинг и многопоточность это немного посложнее.


пытался сделать на SwingWorker, все равно пока форма не отработает, консоль не заполняется.

Сейчас реализация следующая:
1. При нажатии на кнопку все значения полей присваиваются переменным.
2. Создан отдельный класс формы с консолью.
3. В новом классе идет обработка данных.

Вот здесь я не могу уловить одну деталь, как остановить jButton1ActionPerformed.

Сейчас попробую отдельным потоком создать.
 
 
Сообщения:17
В общем не помогло решение.
Создал отдельный поток
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
        exec.scheduleAtFixedRate(new Runnable() {
bla bla bla
}, 0, 5, TimeUnit.SECONDS);

При запуске формы данный поток вырубается
 
 
Сообщения:344
Вы бы лучше выложили минимально-необходимый неработающий код (исходники), чтобы можно было понять что и как делаете, а не гадать.
 
 
Сообщения:17
Алилуя получилось.
С помощью SwingWorker сделал много поточность.

Всем спасибо. Ваши советы натолкнули меня на решение.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет