0

这段代码有什么问题?

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

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

4

1 回答 1

6

您正在收听的组件可能没有重点。如果您要走 KeyListener 路线,请查看是否获得焦点事件并检查 isFocusable 是否适用于您的元素。

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

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

于 2013-08-11T19:52:15.800 回答