как сохранить фокус на jframe, когда выбрано jtextfield или кнопка

как говорится в названии. Я пытаюсь понять, как удерживать внимание на JFrame или, возможно, на окне. Так что, когда я нажимаю F1 на клавиатуре, он активирует метод. И это также должно делать это, когда я печатаю текстовое поле.

Я прочитал "Как использовать подсистему фокусировки", но не могу найти то, что ищу. А может я просто не знаю где искать.

Я пытался использовать contentPane.setFocusable(true);, но он теряет фокус, когда я активирую другой компонент. Итак, как мне заставить его сохранять фокус?


person Slang2856223    schedule 15.01.2014    source источник
comment
Не используйте для этого прослушиватель ключей; использовать привязки клавиш или frame.getRootPane().setDefaultButton()   -  person trashgod    schedule 15.01.2014
comment
KeyListener более гибкий, и вы можете отображать больше ответов, чем с помощью setDefaultButton.   -  person Typo    schedule 15.01.2014


Ответы (1)


Возможно, вы пытаетесь решить неправильную проблему, вызванную использованием KeyListener, что требует фокусировки. Вместо этого используйте привязки клавиш или setDefaultButton(), который находится в корневой панели фрейма.

Приложение: Я попробовал привязки клавиш и почти решил проблему. Он по-прежнему не работает, когда выбран JTextField . Возможно, у вас есть решение для этого?

В зависимости от ваших потребностей рассмотрите возможность использования DocumentListener или DocumentFilter. См. этот Вопросы и ответы, чтобы узнать больше об этих двух.

person trashgod    schedule 15.01.2014
comment
KeyListener не доставляет проблем... и может использоваться более чем одним компонентом - person Typo; 15.01.2014
comment
@ alex2410 Опять же ... KeyListener не доставляет проблем, привязка клавиш - подходящее решение, но не единственное. - person Typo; 15.01.2014
comment
спасибо за ответы. Я согласен с вами, что keylistener - это не выход. Я пробовал setDefaultButton. Но это, похоже, работало только для одной клавиши (я должен был упомянуть, что я также хочу, чтобы F2, F3 и т. Д. Работали). Итак, я попробовал keyBindings и почти решил это. Это все еще не работает, когда выбран JtexField. Может быть, у вас есть решение для этого? - person Slang2856223; 15.01.2014
comment
@ Slang2856223 что за слово?? дай услышать!!! k k k k ... keeeeeyliiiisteneerssss - person Typo; 15.01.2014
comment
@ Slang2856223: привязки клавиш — более гибкий подход; больше выше для JTextComponent подклассов. - person trashgod; 15.01.2014
comment
@trashgod нет, это не так - person Typo; 15.01.2014