2013-12-08 4 views
2

У меня есть приложение, в котором есть текстовое поле и кнопка. текстовое поле имеет focusListener (для неправильных значений), а кнопка имеет actionListener (для сохранения значения в файл). Окно с сообщением об ошибке появляется, когда неправильное значение вводится в текстовое поле, как только оно теряет фокус. Теперь у меня 2 сенария.ActionListener работает перед прослушивателем фокуса

  1. , когда фокус утерян из закладки, и если в поле введено неправильное значение, появится всплывающее окно.

  2. Но когда я ввожу неправильное значение в поле и без табуляции, я нажимаю кнопку, тогда активист действия активируется перед focusListener (Focus Lost), и он сохраняет неправильное значение в текстовом файле, а затем показывает ошибку сообщение.

Как я могу остановить неправильное значение, которое нужно сохранить в файл, сначала запустив focuslistener?

ответ

2

ActionListener работает, прежде чем фокус слушателя

  • Focus, FocusListener, Focus Subsystem is asyncronous, вы можете эти события планирования событий, но может вызвало еще побочные эффекты, я предлагаю не делать этого

  • задержки требуемые события в EDT с использованием invokeLater,

+0

Я пробовал с invokelater внутри actionlistener, но до сих пор не получил то, что хотел. 'Общественная пустота (событие ActionEvent) actionPerformed {EventQueue.invokeLater (новый Runnable() {\t \t \t общественности недействительным запуска() { если (componentManager.textField.getText() равно ("")) {}}.);) ' – user3079800

Смежные вопросы