Подтвердить что ты не робот

Как узнать, какой объект в настоящее время имеет фокус

У меня есть несколько TextField в моем Frame. Я хочу знать, какой TextField в настоящее время имеет фокус. Как я могу найти эту информацию?

4b9b3361

Ответ 1

JFrame.getFocusOwner() (унаследованный от Window.getFocusOwner()) должен возвращать ссылку на компонент с фокусом. getMostRecentFocusOwner() также может представлять интерес.

Ответ 2

KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()

Ответ 4

getFocusOwner() вернет дочерний компонент, который в настоящее время сфокусирован.

Но вы должны проверить, является ли это JTextField. Другие компоненты, такие как кнопки, могут быть сфокусированы, если они существуют и в вашем фрейме.

Ответ 5

Этот учебник должен быть очень полезен для понимания фокуса.

Ответ 6

Каждый JComponent имеет метод hasFocus, который вы можете использовать, чтобы проверить, имеет ли он фокус. Однако это было изменено, и теперь вы должны использовать isFocusOwner.

Итак, запустите все текстовые поля в вашем фрейме и проверьте каждый из них, если это isFocusOwner, вызывая этот метод.

Вы также можете получить владельца фокуса через фрейм.

Ответ 7

KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
не работает через потоки. Поэтому, если ваше приложение вызывает новый поток, и этот поток имеет свой собственный фрейм/окно и т.д., Тогда он не сможет получить владельца фокуса из этого потока. Вместо этого используйте: KeyboardFocusManager.getCurrentKeyboardFocusManager().getGlobalFocusOwner();