我制作了一个由箭头键控制的游戏。因此,我有一个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/