Пробел не регистрируется при удерживании и оставленном с Java Keylistener - PullRequest
1 голос
/ 21 мая 2019

Когда я держу и оставляю программу нормально их регистрирует.Тем не менее, он не будет регистрироваться, когда я нажму пробел.Если вы переключите VK_LEFT на VK_RIGHT, затем продолжайте удерживать вправо и вверх, нажимая пробел, все работает нормально.

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) {

    }
}

Он должен регистрировать пространство, удерживая и оставляя, как это делает вверх и вправо, но это не так.

...