Java/Swing: проблема с ключевым слушателем

У меня есть поисковое диалоговое окно с JTextField, это используется в качестве поля поиска.

Когда пользователь вводит что-то, это ищет DB, показывает результат в JTable и выбирает первый объект в нем.

Если первый результат - то, что они искали, я хочу позволить им быстро принять диалоговое окно путем нажатия Enter (в то время как JTextField фокусируется).

Таким образом, я добавил KeyListener к JTextField, и он работает хорошо.

Теперь проблема: пользователь открывается, может открыть диалоговое окно путем нажатия Enter, когда кнопка "Search" на родительском кадре диалогового окна фокусируется.

Диалоговое окно отображено, и JTextField получает keyReleased событие (от клавиши Enter, которая отобразила его), таким образом, это обнаруживается и закрывается. Если пользователь держит, Входят вниз, то JTextField получает keyPressed, keyTyped и keyReleased события.

Как я могу зафиксировать, не обращаясь к ужасным обходным решениям?

Платформа является Windows 7 x64, btw.

Спасибо.

1
задан Mike 11 March 2011 в 01:13
поделиться

1 ответ

Итак, я добавил KeyListener к JTextField и все работает нормально.

Вы НЕ должны использовать KeyListener для этого. Вы должны добавить ActionListener к текстовому полю.

В общем, вы не должны использовать KeyListeners, вы должны использовать Key Bindings.

2
ответ дан 3 September 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: