У меня есть несколько TextField
в моем Frame
. Я хочу знать, какой TextField
в настоящее время имеет фокус. Как я могу найти эту информацию?
Как узнать, какой объект в настоящее время имеет фокус
Ответ 1
JFrame.getFocusOwner()
(унаследованный от Window.getFocusOwner()
) должен возвращать ссылку на компонент с фокусом. getMostRecentFocusOwner()
также может представлять интерес.
Ответ 2
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
Ответ 3
Также посмотрите javax.swing.FocusManager
Ответ 4
getFocusOwner() вернет дочерний компонент, который в настоящее время сфокусирован.
Но вы должны проверить, является ли это JTextField. Другие компоненты, такие как кнопки, могут быть сфокусированы, если они существуют и в вашем фрейме.
Ответ 5
Этот учебник должен быть очень полезен для понимания фокуса.
Ответ 6
Каждый JComponent имеет метод hasFocus, который вы можете использовать, чтобы проверить, имеет ли он фокус. Однако это было изменено, и теперь вы должны использовать isFocusOwner.
Итак, запустите все текстовые поля в вашем фрейме и проверьте каждый из них, если это isFocusOwner, вызывая этот метод.
Вы также можете получить владельца фокуса через фрейм.
Ответ 7
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
;
не работает через потоки. Поэтому, если ваше приложение вызывает новый поток, и этот поток имеет свой собственный фрейм/окно и т.д., Тогда он не сможет получить владельца фокуса из этого потока. Вместо этого используйте: KeyboardFocusManager.getCurrentKeyboardFocusManager().getGlobalFocusOwner();