У меня есть поисковое диалоговое окно с JTextField, это используется в качестве поля поиска.
Когда пользователь вводит что-то, это ищет DB, показывает результат в JTable и выбирает первый объект в нем.
Если первый результат - то, что они искали, я хочу позволить им быстро принять диалоговое окно путем нажатия Enter (в то время как JTextField фокусируется).
Таким образом, я добавил KeyListener к JTextField, и он работает хорошо.
Теперь проблема: пользователь открывается, может открыть диалоговое окно путем нажатия Enter, когда кнопка "Search" на родительском кадре диалогового окна фокусируется.
Диалоговое окно отображено, и JTextField получает keyReleased событие (от клавиши Enter, которая отобразила его), таким образом, это обнаруживается и закрывается. Если пользователь держит, Входят вниз, то JTextField получает keyPressed, keyTyped и keyReleased события.
Как я могу зафиксировать, не обращаясь к ужасным обходным решениям?
Платформа является Windows 7 x64, btw.
Спасибо.
Итак, я добавил KeyListener к JTextField и все работает нормально.
Вы НЕ должны использовать KeyListener для этого. Вы должны добавить ActionListener к текстовому полю.
В общем, вы не должны использовать KeyListeners, вы должны использовать Key Bindings.