KeyAdapter没有响应~Java

KeyAdapter没有响应~Java,java,swing,key-bindings,keylistener,Java,Swing,Key Bindings,Keylistener,我正在创建一个简单的突破游戏。但是,KeyAdapter没有接收输入。代码在我看来很好,但也许我缺少了一些更基本的东西 public DatGamePanel(BustOut bo, long framerate) { setBackground(Color.black); setPreferredSize( new Dimension(GAME_WIDTH,GAME_HEIGHT)); setFocusable(true); font = new Font(

我正在创建一个简单的突破游戏。但是,KeyAdapter没有接收输入。代码在我看来很好,但也许我缺少了一些更基本的东西

public DatGamePanel(BustOut bo, long framerate) {

    setBackground(Color.black);
    setPreferredSize( new Dimension(GAME_WIDTH,GAME_HEIGHT));
    setFocusable(true);

    font = new Font("Sans Serif", Font.BOLD, 24);
    fm = this.getFontMetrics(font);

    this.bo = bo;
    period = 1000/framerate;
    bat = new Bat("bat.png",GAME_WIDTH,GAME_HEIGHT-32,2);

    //Get keyboard input :D
    addKeyListener( new KeyAdapter() {
        public void keyPressed(KeyEvent ke) {
            handleInputPressed(ke);
        }

        public void keyReleased(KeyEvent ke) {
            handleInputReleased(ke);
        }
    });
}

public void handleInputPressed(KeyEvent ke) {
    int a = ke.getKeyCode();
    switch(a) {
        case KeyEvent.VK_LEFT:
        bat.keyHandle(0);
        test = 1;
        break;

        case KeyEvent.VK_RIGHT:
        bat.keyHandle(2);
        break;
    }
}

public void handleInputReleased(KeyEvent ke) {
    System.out.println("Key Pressed");
    int a = ke.getKeyCode();
    switch(a) {
        case KeyEvent.VK_LEFT:
        bat.keyHandle(1);
        test = 0;
        break;

        case KeyEvent.VK_RIGHT:
        bat.keyHandle(3);
        break;
    }       
}

这些都是基本的输入句柄。当我按下左箭头时,测试变量不会改变。这里有什么问题…

如果您只是在侦听几个键,而执行侦听的组件可能没有焦点,那么使用键绑定比使用键侦听器要好得多。请看这里


如果这个建议似乎没有帮助,考虑创建和发布(请点击链接),一个小的可编译的、可运行的程序,演示了解决这个问题的最佳尝试。然后,我们可以检查您的代码,运行它,修改它,并尽可能帮助您修复它。

“确保组件的
isFocusable()
方法返回true。”