Java KeyListener keyPressed方法触发太快

Mar*_*ark 2 java swing keyevent keylistener

如果你使用java KeyListener类,你知道如果你按住一个键keyPressed会触发一个KeyEvent,然后大约半秒后将非常快地多次触发相同的键.我想知道是否有办法防止KeyEvents射击太快.我希望它们以大约每500毫秒一次的恒定速率运行.

Kur*_*lor 5

你可以,但诀窍是不要减慢事件的触发速度,但要减慢你处理它们的速度:

KeyListener kl = new KeyListener() {
    private long lastPressProcessed = 0;

    @Override
    public void keyPressed(KeyEvent e) {
        if(System.currentTimeMillis() - lastPressProcessed > 500) {
            //Do your work here...
            lastPressProcessed = System.currentTimeMillis();
        }           
    }

    @Override
    public void keyTyped(KeyEvent e) {}

    @Override
    public void keyReleased(KeyEvent e) {   }

};
Run Code Online (Sandbox Code Playgroud)