我有一个程序可以生成一个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) {
}
答案 0 :(得分:3)
没有你的代码,我可以告诉你的是,通常当人们问这个时他们不知道接口KeyListener
包含三个方法,如their answer here中的Agusti-N状态:
void keyTyped(KeyEvent)
void keyPressed(KeyEvent)
void keyReleased(KeyEvent)
如果您使用keyTyped
并且使用event.getKeyCode()
检查输入的字符,则无效。您应getKeyChar()
使用keyTyped
,getKeyCode()
和keyPressed
使用keyReleased
。否则你会得到null
。
如果您没有任何其他选择,则应该只使用此选项,在大多数情况下,您希望使用Key Bindings。