Для какого компонента я должен добавить KeyListener?

У меня есть графический интерфейс.

Этот класс GUI расширяет JFrame.

В верхней части экрана есть JLabel с текстом.

В центре экрана находится JPanel, и к этой JPanel добавлено n x n кнопок JButton.

Мне нужен KeyListener, чтобы реагировать, если я нажму клавишу.

Для какого компонента (JFrame, JLabel, JPanel, JButtons) я должен добавить KeyListener для нормальной работы моей программы?


person user2693979    schedule 15.01.2014    source источник


Ответы (2)


Для какого компонента я должен добавить KeyListener?

  • вы можете использовать Keylistener для (обозначено)

    1. доисторический компонент AWT (Swing на основе AWT)

    2. для более чем 3 keyPressed в то же время или для определения порядка

    3. но тогда для Swing JComponents лучше использовать KeyEventDispatcher или AWTEventListener (оба реагируют на сигналы с клавиатуры)

  • в противном случае используйте KeyBindings (например, Swing JComponents использует KeyBindings внутри)
person mKorbel    schedule 15.01.2014
comment
Но к какому компоненту свинга он принадлежит? - person Pureferret; 15.01.2014
comment
Теоретически @Pureferret для всех JComponents возможен, но с чрезвычайными усилиями для создания разумного кода - person mKorbel; 15.01.2014
comment
Так что бы вы порекомендовали. В нынешнем виде вы не отвечаете на вопрос. - person Pureferret; 16.01.2014
comment
мой пункт 1-й. & 2-й и 3-й только обратите внимание, что есть лучший способ - person mKorbel; 16.01.2014

JFrame был бы самым разумным выбором, учитывая, что это предок верхнего уровня, и вы сможете избежать проблем с фокусировкой. Однако, если вы говорите, что вам нужно реализовать JTextField, тогда необходимо будет добавить прослушиватель ключей в JTextField, потому что фокус отвлекается от параллельных компонентов, чтобы использовать возможность ввода в поле.

person Community    schedule 15.01.2014
comment
тогда надо было бы в JTextField добавить keylistener - для этого цирка есть DocumentListener - person mKorbel; 15.01.2014