0

我有一个GUI扩展 JFrame 的类,以及一个KeyPresses扩展KeyAdapter. 在我的构造函数中,我传入了一个toGUI的实例。据我所知,这就是我需要做的,但由于某种原因,当我按下一个键时它没有被调用。KeyAdapteraddKeyListener()

适用代码:

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作品很好。

4

1 回答 1

2

这是一个常见的问题KeyListener。AKeyListener只会在它附加到的组件是可聚焦的并且具有键盘焦点时引发事件。

相反,建议您使用Key Bindings API,它为您提供了用于确定应在哪个焦点级别触发绑定的控件。

于 2013-11-07T00:13:07.470 回答