2014-12-03 105 views
0

我希望能够从用户的键盘接收输入,但是我添加了所有我认为会允许我的程序执行此操作但仍然无效的输入。我究竟做错了什么?KeyListener在Java中不工作

class KeyInput implements KeyListener { 
    public void keyPressed(KeyEvent e) { 
     System.out.println("keyPressed"); 
    } 
    public void keyReleased(KeyEvent e) { 
     System.out.println("keyReleased"); 
    } 
    public void keyTyped(KeyEvent e) { 
     System.out.println("keyTyped"); 
    }  
} 

public GameView() { 
    this.addKeyListener(new KeyInput()); 
} 

该构造函数工作正常,并且KeyInput是GameView对象的内部类。 运行游戏时,如果按下某个键,则系统不会输出任何内容。 我错过了什么吗?谢谢!

+0

哦,我看了看其他民族的代码和发现我需要添加: this.setFocusable(true); this.requestFocusInWindow(); – Mayron 2014-12-03 11:20:06

+0

它没有告诉我这是我正在使用的书,谢谢无论如何对不起^^ – Mayron 2014-12-03 11:20:44

+1

发表解答,而不是评论的解释。然后,您可以将您的问题标记为已解决。 – mcoolive 2014-12-03 11:22:23

回答

3

KeyListener是善变的女主人,它一直都很受关注。基本上,只有当它注册的组件具有焦点和可聚焦时,才会引发关键事件。

一般情况下,要避免使用它,并使用键绑定API来代替,How to Use Key Bindings,但是这将取决于你是否必须使用纯AWT API或不....