此代码有什么问题?
addKeyListener(new KeyHandler());
private class KeyHandler extends KeyAdapter {
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
int key = e.getKeyCode();
System.out.println("test");
if(key==KeyEvent.VK_SPACE || key==KeyEvent.VK_ENTER || key==KeyEvent.VK_P) {
paused = true;
}
}
}
这应该在控制台中打印测试,但事实并非如此。我做错了什么?
答案 0 :(得分:6)
您正在收听的组件可能无法集中注意力。如果你要沿着KeyListener路线走下去,看看你是否得到一个焦点事件并检查你的元素是否为isFocusable。
在任何情况下,如果您只想绑定几个键,最好使用KeyBindings:
http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html