我制作了一个由箭头键控制的游戏。因此我有一个 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 键
+ 向上箭头
使用键盘最大化窗口时,这些事件仍然会被触发。如何检测已按下 Windows 键
,同时按下其中一个箭头键?
最佳答案
在您的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 KeyListener 监听方向键,不带 "Windows key",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23641249/