我正在创建一个使用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();
}
答案 0 :(得分:1)
我认为这些事件是由JVM /操作系统生成的。用户必须更改按键延迟/按键重复设置以消除延迟。
我认为没有办法通过代码来控制延迟。
答案 1 :(得分:1)
我建议您不要使用keyPressed事件检测到保留。使用计时器不断检查按下的键。使用BitSet。在keyPressed和on KeyReleased上更新BitSet以跟踪按下的键。这样,您可以一次检测多个按键。 如果您正在构建游戏,那么您已经拥有可用于此游戏的游戏时钟