【问题标题】:KeyListener is firering wrong EventsKeyListener 触发了错误的事件
【发布时间】:2019-09-23 01:15:57
【问题描述】:

我编写了一个简单的 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;
            }
        }
    }

leftClick 上的控制台输出为: 左按 右键

右键单击: 右键

【问题讨论】:

    标签: java keylistener keyevent


    【解决方案1】:

    您忘记了 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;
                }
            }
        }
    

    【讨论】:

      【解决方案2】:
      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。括号不是必需的,但您必须添加中断语句。

      【讨论】:

        猜你喜欢
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        • 2020-09-24
        • 2016-11-10
        • 1970-01-01
        • 1970-01-01
        • 2014-09-17
        • 2014-05-23
        相关资源
        最近更新 更多