我应该在什么组件中添加KeyListener?

时间:2014-01-15 18:41:37

标签: java swing awt keylistener jcomponent

我有一个GUI。

此GUI类扩展了JFrame。

在屏幕顶部有一个带有一些文字的JLabel。

在屏幕的中央有一个JPanel,并且在这个JPanel中添加了n x n个JButtons。

如果我按一个键,我需要一个KeyListener来作出反应。

对于什么组件(JFrame,JLabel,JPanel,JButtons)我应该添加KeyListener来正常工作我的程序?

2 个答案:

答案 0 :(得分:2)

JFrame将是最明智的选择,因为它是一个顶级祖先,你可以避免焦点问题。但是,如果您说要实现JTextField,则需要将keylistener添加到JTextField,因为焦点是从并行组件中提取出来的,以便能够键入字段。

答案 1 :(得分:1)

  

我应该在哪个组件中添加KeyListener?

  • 你可以使用Keylistener(被指定)

    1. 史前AWT组件(基于AWT的Swing)

    2. 同时为3个以上的keyPressed或确定订单

    3. 但是对于Swing JComponents 最好使用KeyEventDispatcher或AWTEventListener(两者都对键盘中的信号做出反应)

  • 否则使用KeyBindings(例如Swing JComponents在内部使用KeyBindings)