Java KeyListener引发了错误的事件

Java KeyListener引发了错误的事件,java,keylistener,keyevent,Java,Keylistener,Keyevent,我编写了一个简单的KeyListener来识别Arrow_左/右事件。 由于某种原因,我的左键触发了1个VK_左按和1个VK_右事件(右箭头正常工作) 这一定是硬件/键盘问题(箭头键工作正常)还是知道如何解决 public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_LEFT: { //left

我编写了一个简单的KeyListener来识别Arrow_左/右事件。 由于某种原因,我的左键触发了1个VK_左按和1个VK_右事件(右箭头正常工作)

这一定是硬件/键盘问题(箭头键工作正常)还是知道如何解决

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语句。如果你没有破案,下一个案子将被执行

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;
            }
        }
    }
你用错了开关盒。括号不是必需的,但必须添加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;
        }
}