KeyListener不起作用

时间:2013-08-11 19:48:29

标签: java swing keylistener

此代码有什么问题?

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;
            }
        }
    }

这应该在控制台中打印测试,但事实并非如此。我做错了什么?

1 个答案:

答案 0 :(得分:6)

您正在收听的组件可能无法集中注意力。如果你要沿着KeyListener路线走下去,看看你是否得到一个焦点事件并检查你的元素是否为isFocusable。

在任何情况下,如果您只想绑定几个键,最好使用KeyBindings:

http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html