Java KeyListener 监听方向键,不带 "Windows key"

标签 java keylistener

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

相关文章:

java |按键监听器 |基本的

java - 在文本字段中使用字母的方法

java - 如何将 unicode 符号映射到 Java 中等效的更简单的拉丁脚本

java - 使用 Java 打开终端窗口

java - 如何制作 Activity 来显示从服务获取的数据?

java - JFrame 在 .jar 文件中时不运行

Java KeyListener 控件

java - 如何编写一个按键监听器来跟踪 Java 中的所有击键?

java - JTextArea 按回车添加不必要的新行

java - 从全文中检索字符串的一部分