Сделать все текстовое поле недоступным для редактирования при нажатии кнопки - PullRequest
0 голосов
/ 02 июля 2018

Я новичок в кодировании Swing. У меня есть 3 текстовых поля и одна кнопка. После нажатия кнопки я хочу отключить / деактивировать три текстовых поля. Я добавил приведенный ниже код в функцию actionPerformed кнопки. Он не отключает / делает его недоступным для редактирования.

myTextField.setEditable(false);
myTextField.setEnabled(false);
mytask() //it taskes almost 30 minutes

Может кто-нибудь сказать, пожалуйста, что я делаю не так?

1 Ответ

0 голосов
/ 02 июля 2018

mytask () // выполняет почти 30 минут

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

Прочтите раздел из учебника по Swing на Параллелизм для получения дополнительной информации. Возможно, вы захотите использовать SwingWorker для этой задачи.

Я добавил приведенный ниже код в кнопку actionPerformed function. Он не отключает / делает его недоступным для редактирования

Если вы уже вызываете задачу в отдельном потоке, это означает, что у вас нет ссылки на текстовое поле, в которое вы добавляете фрейм. Может быть, вы создали два экземпляра.

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