KeyListener没有被调用

时间:2013-11-07 00:11:08

标签: java swing

我有一个GUI类扩展了JFrame,另一个内部类KeyPresses扩展了KeyAdapter。在GUI的构造函数中,我将KeyAdapter的实例传递给addKeyListener()。据我所知,这就是我需要做的全部,但出于某种原因,当我按下一个键时,它不被调用。

适用代码:

public class GUI extends JFrame{
  public GUIMaze(Options options){
    addKeyListener(new KeyPresses());
    ...more code...
  }
  private class KeyPresses extends KeyAdapter{
     @Override
     public void keyPressed(KeyEvent e){
        ...code that is not being run...
     }
  }
}

奇怪的是,在我进行一些重构之前,这段代码使用了来工作。要么我删除了我需要的东西,要么我正在做一些与KeyPresses冲突的事情。

我只有1 KeyListener,我的MouseListener工作正常。

1 个答案:

答案 0 :(得分:2)

这是KeyListener的常见问题。 KeyListener仅在附加的组件可聚焦且具有键盘焦点时才会引发事件。

相反,建议您使用Key Bindings API,它为您提供控件,以确定应在何种焦点级别触发绑定。