У меня есть текстовое поле Swing, содержащее значение, которое проверяется на событии focuslost. Форма имеет множество других элементов управления, в том числе кнопку отмены. Я хочу, чтобы проверка была пропущена, если фокус был потерян из-за нажатия кнопки отмены. Как это может быть сделано?
Swing: игнорировать событие потери фокуса текстового поля при нажатии определенной кнопки
comment
Вы всегда можете проверить OppositeComponent FocusEvent, но обычно это не очень удобно.
- person Guillaume Polet   schedule 20.07.2012
comment
@Guillaume: Ваше предложение сработало для меня. Хакерский и неуправляемый, но делает свое дело. Если вы добавите это как ответ, я приму это.
- person Abhijeet Kashnia   schedule 20.07.2012
Ответы (1)
Я бы предложил удалить код, выполняющий проверку focusLost
, и либо реализовать проверку в DocumentListener
, либо выбрать JFormattedTextField
со встроенной проверкой.
Также с точки зрения пользователя я предпочитаю проверку «на лету», а не потерю фокуса. Когда я начинаю печатать, приятно видеть, когда ваш ввод становится неправильным. Кроме того, вы можете отключить кнопку «ОК», пока есть недопустимый ввод, и оставить только кнопку «Отмена» включенной. Это, конечно, требует, чтобы ваша проверка не выводила всплывающие сообщения, а просто добавляла указание в/рядом с полями ввода.
person
Robin
schedule
20.07.2012
Некоторые проверки могут быть дорогостоящими, если выполняются нажатием клавиши. В противном случае, ценные предложения.
- person Abhijeet Kashnia; 20.07.2012