我制作了一个由箭头键控制的游戏。因此,我有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
已被按下?
答案 0 :(得分:1)
在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;
}
}
答案 1 :(得分:0)
您可以在密钥发布中捕获窗口密钥
case: KeyEvent.VK_WINDOWS:
//do nothing
因此,当您按下窗口+向上时,它不会注册向上按钮