我有一个程序,它生成一个 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) {
}
最佳答案
如果没有您的代码,我只能告诉您,通常当人们问这个问题时,他们不知道接口(interface) KeyListener
包含三个方法,如 Agusti-N 在 their answer here 中所述。 :
void keyTyped(KeyEvent)
void keyPressed(KeyEvent)
void keyReleased(KeyEvent)
如果您使用keyTyped
并且使用event.getKeyCode()
来检查输入的字符,则这将不起作用。您应该对 keyTyped
使用 getKeyChar()
,对 keyPressed
和 keyReleased
使用 getKeyCode()
>。否则你会得到null
。
仅当您没有任何其他选择时才应使用此选项,在大多数情况下您想使用 Key Bindings .
关于Java 没有接收到按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690477/