KeyListener запускает неправильные события - PullRequest
0 голосов
/ 05 мая 2019

Я написал простой KeyListener для распознавания Arrow_Left / Right Events.По какой-то причине моя левая клавиша запускает 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;
            }
        }
    }

Вывод консоли на левом клике: leftPressed rightPressed

На RightClick: rightPressed

Ответы [ 2 ]

0 голосов
/ 05 мая 2019
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.

0 голосов
/ 05 мая 2019

Вы забыли прервать выписку по делу Если вы не сломали, следующий случай будет выполнен.

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