修复java keypress动作中的延迟问题

时间:2012-01-29 04:37:53

标签: java swing keylistener

我正在创建一个使用keylistener的Java应用程序。我注意到当用户按住键时使用keypressed侦听器时,它会注册然后需要一秒钟来检测保持。有没有办法摆脱这种短暂的延迟?

public void keyPressed(KeyEvent arg0) 
{
    char key = arg0.getKeyChar();
    if(key == 'a')
        update = Status.Left;
    else if(key == 's')
        update = Status.Crouch;
    else if(key == 'd')
        update = Status.Right;
    else if(key == ' ')
        update = Status.Shoot;
    else
        update = Status.None;
    System.out.println(arg0.getKeyChar());
    this.repaint();
}

2 个答案:

答案 0 :(得分:1)

我认为这些事件是由JVM /操作系统生成的。用户必须更改按键延迟/按键重复设置以消除延迟。

我认为没有办法通过代码来控制延迟。

答案 1 :(得分:1)

我建议您不要使用keyPressed事件检测到保留。使用计时器不断检查按下的键。使用BitSet。在keyPressed和on KeyReleased上更新BitSet以跟踪按下的键。这样,您可以一次检测多个按键。 如果您正在构建游戏,那么您已经拥有可用于此游戏的游戏时钟