У меня проблемы с передачей информации, обновлением прогресса и указанием «выполнено» с классом SwingWorker, который не является инкапсулированным классом .
У меня есть простой класс, который обрабатывает файлы и каталоги на жестком диске. Пользователь нажимает кнопку «Пуск», и он запускает экземпляр SwingWorker.
Я хотел бы напечатать имена файлов, которые обрабатываются на JTextArea в потоке, управляемом событиями, из SwingWorker в качестве обновления индикатора выполнения. Все примеры в Интернете предназначены для вложенного класса, а вложенный класс обращается к переменным во внешнем классе (например, метод done
). Я также хотел бы сообщить потоку, управляемому событиями, о завершении SwingWorker, чтобы EDT мог выполнять такие действия, как включение кнопки «Пуск» (и очистка полей).
Вот мои вопросы:
1. Как класс SwingWorker помещает текст в JTextArea потока, управляемого событиями, и обновляет индикатор выполнения?
- Как EDT определяет, когда закончится { внешний } поток SwingWorker?
{ Я не хочу SwingWorker как вложенный класс, потому что много кода (и обработки) сделано. }