SwingWorker для изменения кнопки в основном классе графического интерфейса

У меня есть основной класс GUI с кнопками и другими элементами управления. Когда одна из кнопок (скажем, btnGo) выбрана, она отключается, и SwingWorker (в настоящее время часть другого класса) инициируется, чтобы что-то сделать.

Я хочу, чтобы кнопка снова активировалась, когда SwingWorker завершит работу.

Как позволить моему «дочернему классу» (из-за отсутствия лучшего слова) обновить элемент управления в моем основном классе графического интерфейса?


person Rico Strydom    schedule 27.10.2014    source источник


Ответы (1)


Передайте ссылку на кнопку в конструктор вашего подкласса SwingWorker. Затем в методе .done() вы можете снова включить его.

Метод .done() запускается в потоке GUI, поэтому он может безопасно изменить состояние кнопки.

Альтернативой является регистрация кнопки как PropertyChangeListener из SwingWorker, чтобы она получала уведомление, когда работа выполнена.

person chiastic-security    schedule 27.10.2014