Java没有拿起按键吗?

时间:2013-03-28 19:28:12

标签: java swing override public keylistener

我有一个程序可以生成一个JFrame,然后生成一个JPanel。对于程序,我尝试实现KeyListener,然后添加方法(对于两个组件),但程序不会选择任何我的键击。我做错了什么?

修改

这是我的代码。它是创建JFrame的类的一部分。它仍然没有按下 ESC 键。

@Override
public void keyTyped(KeyEvent e) {

}

@Override
public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();

    if(keyCode == KeyEvent.VK_ESCAPE){
        System.out.println("Hi");

    }else{
        System.out.println("Hello");

    }

}

@Override
public void keyReleased(KeyEvent e) {

}

1 个答案:

答案 0 :(得分:3)

没有你的代码,我可以告诉你的是,通常当人们问这个时他们不知道接口KeyListener包含三个方法,如their answer here中的Agusti-N状态:

void keyTyped(KeyEvent)
void keyPressed(KeyEvent)
void keyReleased(KeyEvent)

如果您使用keyTyped并且使用event.getKeyCode()检查输入的字符,则无效。您应getKeyChar()使用keyTypedgetKeyCode()keyPressed使用keyReleased。否则你会得到null。 如果您没有任何其他选择,则应该只使用此选项,在大多数情况下,您希望使用Key Bindings