Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修复java按键操作中的延迟问题_Java_Swing_Keylistener - Fatal编程技术网

修复java按键操作中的延迟问题

修复java按键操作中的延迟问题,java,swing,keylistener,Java,Swing,Keylistener,我正在创建一个使用keylistener的Java应用程序。我注意到,当用户按下按键时,使用按键监听器时,它会进行注册,然后需要一秒钟来检测保持。有没有办法摆脱这种短暂的延误 public void keyPressed(KeyEvent arg0) { char key = arg0.getKeyChar(); if(key == 'a') update = Status.Left; else if(key == 's') update

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

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();
}

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


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

我建议您不要使用按键事件来检测保持。使用计时器不断检查按键是否按下。使用位集。按下键和释放键时,更新位集以跟踪按下的键。这样,您可以同时检测多个按键。
如果你正在构建一个游戏,你已经有了游戏时钟,可以用于此

只需仔细检查——这是一个AWT应用程序而不是Swing应用程序,对吗?因为如果使用Swing,我会有一个解决方案——使用Swing计时器和键绑定。@DazSlayer:KeyEvent用于awt而不是Swing。秋千有。一定要读一些关于他们的书。它们比KeyEvent更合适。当做