java - KeyAdapter 没有响应 ~ Java

标签 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("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;
    }       
}

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

最佳答案

如果您只是监听几个按键,并且执行监听的组件可能没有焦点,那么使用按键绑定(bind)比使用 KeyListener 要好得多。请看这里How to use Key Bindings

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

关于java - KeyAdapter 没有响应 ~ Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5048536/

相关文章:

Java Swing 尝试迭代列表并绘制每一行

java - 使用 KeyBindings 获取输入

java - 用 mockito 测试一个方法,它使用其他类的一些实用方法

java - Hibernate 中带注释的标记系统

java - 当没有中间变量时,在 Eclipse 调试器中操作返回值

java - 用于显示 Java ArrayList 中唯一值出现次数的字符串

java - 多个ListCell渲染器

java - Icon 和 ImageIcon 的区别?

java - 删除 JTable 中的 Enter 键绑定(bind)

javascript - 使用箭头键导航多步骤表单?