Windows 8 键盘重复延迟意外打开

Windows 8 键盘重复延迟意外打开,windows-8,keyboard,delay,keylistener,key-bindings,Windows 8,Keyboard,Delay,Keylistener,Key Bindings,我对java和java比较陌生 我正在做一个游戏,包括用箭头键移动一个物体(你握得越久,它移动得越快) 以下是这些动作的代码(我使用的是keylistener): 在我转到Windows8(从WindowsXP)之前,这一切都很好。现在,每当我按住箭头键时,键盘重复延迟率就会打开。因此,对象将移动一步,然后暂停,然后其他步骤开始(就像在文本字段中键入字母一样) 我想为这个游戏关闭键盘重复延迟,我不知道该怎么办。 此外,我想做的是一次能够持有多个关键点(所以它可以去对角线) 我试图理解键绑定,但在

我对java和java比较陌生 我正在做一个游戏,包括用箭头键移动一个物体(你握得越久,它移动得越快)

以下是这些动作的代码(我使用的是keylistener):

在我转到Windows8(从WindowsXP)之前,这一切都很好。现在,每当我按住箭头键时,键盘重复延迟率就会打开。因此,对象将移动一步,然后暂停,然后其他步骤开始(就像在文本字段中键入字母一样)

我想为这个游戏关闭键盘重复延迟,我不知道该怎么办。 此外,我想做的是一次能够持有多个关键点(所以它可以去对角线)


我试图理解键绑定,但在理解时遇到了困难。

我不知道如何从代码中更改键盘重复延迟,但可以做的一件事是在keydown事件中启动处理(增加或降低速度),并在keyupevent中停止处理。这样,您就不会依赖键盘速率延迟

你可以看看-


有点不同的问题,但解决方法是一样的。

谢谢,我可以这样做。我希望有办法解决我的具体问题,当然有办法解决这个问题。我会等别人回答:)好的:)如果你以后用我的建议,然后在答案上面做标记。:)
public void keyPressed(KeyEvent e) {

    int c = e.getKeyCode();

        if(c == KeyEvent.VK_A||c == KeyEvent.VK_LEFT){
            PacMan.velX -= PacMan.speed;
            PacMan.move = true;
            //PacMan.velY = 0;
            System.out.println("LEFT");
        }
        if(c == KeyEvent.VK_D||c == KeyEvent.VK_RIGHT){
            PacMan.velX += PacMan.speed;
            PacMan.move = true;
            //PacMan.velY = 0;
            System.out.println("RIGHT");
        }
        if(c == KeyEvent.VK_W||c == KeyEvent.VK_UP){
            PacMan.velY -= PacMan.speed;
            PacMan.move = true;
            //PacMan.velX = 0;
            System.out.println("UP");
        }
        if(c == KeyEvent.VK_S||c == KeyEvent.VK_DOWN){
            PacMan.velY += PacMan.speed;
            PacMan.move = true;
            //PacMan.velX = 0;
            System.out.println("DOWN");
        }
        if(c == KeyEvent.VK_ESCAPE){
            if(Main.pause == false){Main.pause = true;Main.move = true;}
            else if (Main.pause == true){Main.pause = false;Main.move = false;}
            System.out.println("Pause");
        }
        if(c == KeyEvent.VK_R){
            Levels.setLevel();
        }
        if(c == KeyEvent.VK_E){
            if(nextLevel){nextLevel = false;
            Levels.setLevel();}
        }

        Main.start = true;  

}