我制作了一个由箭头键控制的游戏。因此,我有一个KeyListener在侦听箭头键:

public void keyReleased(KeyEvent event)
{
    switch(event.getExtendedKeyCode())
    {
        case KeyEvent.VK_UP:
            gameManager.up();
            break;
        case KeyEvent.VK_DOWN:
            gameManager.down();
            break;
        case KeyEvent.VK_RIGHT:
            gameManager.right();
            break;
        case KeyEvent.VK_LEFT:
            gameManager.left();
            break;
    }
}


现在这是我的问题:
当我通过按Windows key + Up arrow使用键盘最大化窗口时,这些事件仍然会触发。如何在按下箭头键之一的同时检测到已按下Windows key

最佳答案

在您的KeyListener中设置一个标志,例如

boolean windowsPressed;

public void keyPressed(KeyEvent e) {
    if(event.getExtendedKeyCode() == VK.WINDOWS) windowsPressed = true;
}

public void keyReleased(KeyEvent event)
{
    switch(event.getExtendedKeyCode())
    {
        case KeyEvent.VK_UP:
            if(!windowsPressed) gameManager.up();
            break;
        case KeyEvent.VK_DOWN:
            gameManager.down();
            break;
        case KeyEvent.VK_RIGHT:
            gameManager.right();
            break;
        case KeyEvent.VK_LEFT:
            gameManager.left();
            break;
        case KeyEvent.VK_WINDOWS:
            windowsPressed = false;
            break;
    }
}

关于java - Java KeyListener监听没有“Windows键”的箭头键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23641249/

10-14 05:43