空格键不';用java'按住并向左移动时不注册;键盘监听器

空格键不';用java'按住并向左移动时不注册;键盘监听器,java,keylistener,keyevent,Java,Keylistener,Keyevent,当我挂断并离开时,程序会很好地注册它们。但是,当我点击空格时,它不会注册。如果您将VK_向左切换到VK_向右,然后继续按住向右和向上,同时按下空格键,则效果良好 import javax.swing.JFrame; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; public class Testing implements KeyListener { public boolean isUp;

当我挂断并离开时,程序会很好地注册它们。但是,当我点击空格时,它不会注册。如果您将VK_向左切换到VK_向右,然后继续按住向右和向上,同时按下空格键,则效果良好

import javax.swing.JFrame;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;

public class Testing implements KeyListener {

    public boolean isUp;
    public boolean isLeft;

    public Testing() {
        JFrame application = new JFrame();

        application.addKeyListener(this);
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.setSize(500, 500); 
        application.setVisible(true);
    }

    public static void main(String[] args) {
        Testing test = new Testing();
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_UP)
            isUp = true;
        else if(e.getKeyCode() == KeyEvent.VK_LEFT)
            isLeft = true;
        else if(isUp && isLeft && e.getKeyCode() == KeyEvent.VK_SPACE)
            System.out.println("pew pew");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_UP)
            isUp = false;
        else if(e.getKeyCode() == KeyEvent.VK_LEFT)
            isLeft = false;
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }
}

它应该在按住向上和向左键的同时注册空间,就像按住向上和向右键一样,但它没有注册空间。

我可以确认这种行为,但只有VK_left键导致了问题。按住VK_向左键,只会触发另一个按下的键。有趣的是,按住VK_LEFT键,按键按下事件将持续触发,直到按下另一个VK键,然后新的按键按下事件将持续触发,但VK_LEFT按键按下事件在释放VK_LEFT键之前将永远不会再次触发。我已确定此行为是由键盘硬件中的限制引起的。使用支持n键翻转的Razer Blackwidow游戏键盘,可以正确跟踪所有按键。使用便宜的USB键盘,同时按下向左和向上方向键,可以防止该键盘注册任何后续按键。我想这就是原因,但感谢您的确认。我可以确认这种行为,但只有VK_左键导致了问题。按住VK_向左键,只会触发另一个按下的键。有趣的是,按住VK_LEFT键,按键按下事件将持续触发,直到按下另一个VK键,然后新的按键按下事件将持续触发,但VK_LEFT按键按下事件在释放VK_LEFT键之前将永远不会再次触发。我已确定此行为是由键盘硬件中的限制引起的。使用支持n键翻转的Razer Blackwidow游戏键盘,可以正确跟踪所有按键。使用便宜的USB键盘,同时按下向左和向上方向键,可以防止该键盘注册任何后续按键。我想这就是原因,但感谢您的确认