如何检查按键是否连续按下?

时间:2016-08-10 23:27:45

标签: java

我尝试了这个,但它没有用。

按键时我必须运行动​​画。

我的代码:

case KeyEvent.VK_RIGHT:

while(KeyEvent.KEY_PRESSED){

  estado = ANDA0;

  posX += 10;

}

estado = PARADO;

break;

2 个答案:

答案 0 :(得分:2)

您的while循环将完全压倒GUI事件线程,防止发生任何操作,包括动画操作和键读取事件。相反,我建议你:

  • 如果这是Swing,请使用Key Bindings,而不是KeyListener。
  • 更改使用Swing Timer作为动画循环,而不是冻结while (true)循环的线程。
  • 按键(从键绑定),将状态更改为状态字段
  • 在密钥释放(再次来自绑定)上,还原相同字段的状态
  • 根据上面更改的状态字段的状态,确定动画循环中发生的情况。

例如,请查看this answer and example code of mine

答案 1 :(得分:-1)

使用KEY_RELEASED事件这样的事情可以解决问题:

    case KeyEvent.VK_RIGHT:
    if (KeyEvent.getID() == KeyEvent.KEY_PRESSED)
        bool = true;

    while(bool){

        estado = ANDA0;
        posX += 10;
        if (KeyEvent.getID() == KeyEvent.KEY_RELEASED)
        bool = false;

    }

    estado = PARADO;

  break;