java keyhandler中的键盘灵敏度较低?

java keyhandler中的键盘灵敏度较低?,java,events,key,awt,keyevent,Java,Events,Key,Awt,Keyevent,当我按一次向上箭头时,此代码返回“kk”。我如何配置java或我的计算机,使其只注册一次击键而不是两次 编辑:这是我的临时解决方案 private class KeyHandler implements KeyEventDispatcher{ @Override public boolean dispatchKeyEvent(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_RIGHT){ te

当我按一次向上箭头时,此代码返回“kk”。我如何配置java或我的计算机,使其只注册一次击键而不是两次

编辑:这是我的临时解决方案

private class KeyHandler implements KeyEventDispatcher{

    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_RIGHT){
            tetrominoList.get(currentPiece).moveRight();
    }else if(e.getKeyCode() == KeyEvent.VK_LEFT){
        tetrominoList.get(currentPiece).moveLeft();
    }else if (e.getKeyCode() == KeyEvent.VK_UP){
        System.out.print("k");
        tetrominoList.get(currentPiece).rotate();
    }


        return false;
    }

我可能错了,但看起来您的代码同时处理按下的
键和释放的
键事件。也许你应该检查键入的
键事件,一旦发生,就打印你的信。否则,您只能处理前两个事件中的一个。

您的解决方案似乎合理。+1,但不会为up/down/right/left等生成键型事件。。关键事件。只需检查按键事件。但是,更好的解决方案是使用
键绑定
。搜索论坛以获取更多信息。这个建议是每天提出来的。@camickr,没有注意到是关于箭的。谢谢您指出这一点。@user67784,如果绑定不起作用,那么您就没有正确地实现它们。你在这里发布的代码也不能正常工作。既然这是解决问题的正确方法,为什么不寻求密钥绑定方面的帮助?
    private class KeyHandler implements KeyEventDispatcher{

    int counter = 0;
    public boolean dispatchKeyEvent(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_RIGHT){
            tetrominoList.get(currentPiece).moveRight();
    }else if(e.getKeyCode() == KeyEvent.VK_LEFT){
        tetrominoList.get(currentPiece).moveLeft();
    }else if (e.getKeyCode() == KeyEvent.VK_UP){
        counter++;
        if(counter == 2){
            System.out.print("k");
            tetrominoList.get(currentPiece).rotate();
            counter = 0;
        }
    }