KeyListener 正在触发错误的事件

KeyListener is firering wrong Events

我编写了一个简单的 KeyListener 来识别 Arrow_Left/Right 事件。 出于某种原因,我的左键正在触发 1 VK_LEFT 按下和 1 VK_RIGHT 事件(右箭头正常工作)

这一定是硬件/键盘问题(箭头键工作正常)或者有人知道如何解决这个问题吗?

public void keyPressed(KeyEvent e) {
        switch(e.getKeyCode()) {
            case KeyEvent.VK_LEFT: {
                //left
                System.out.println("leftPressed");
                keyLeftPressed = true;
            }
            case KeyEvent.VK_RIGHT: {
                //right
                System.out.println("rightPressed");
                keyRightPressed = true;
            }
        }
    }

左键的控制台输出是: 左压 右压

右键单击: 右压

您忘记了 case 语句中的 break 语句。如果没有break,则执行下一个case。

public void keyPressed(KeyEvent e) {
        switch(e.getKeyCode()) {
            case KeyEvent.VK_LEFT: {
                //left
                System.out.println("leftPressed");
                keyLeftPressed = true;
                break;
            }
            case KeyEvent.VK_RIGHT: {
                //right
                System.out.println("rightPressed");
                keyRightPressed = true;
                break;
            }
        }
    }
public void keyPressed(KeyEvent e) {
        switch(e.getKeyCode()) {
            case KeyEvent.VK_LEFT: 
                //left
                System.out.println("leftPressed");
                keyLeftPressed = true;
                break;
            case KeyEvent.VK_RIGHT: 
                //right
                System.out.println("rightPressed");
                keyRightPressed = true;
                break;
        }
}

你错误地使用了switch-case。括号不是必需的,但您必须添加 break 语句。