【问题标题】:Universal Key Code (Java)通用密钥代码 (Java)
【发布时间】:2011-01-09 15:05:48
【问题描述】:

您好,我正在编写一个侦听器,该侦听器基于用户按下的键,必须以某种方式执行。

我需要能够确定用户是按下 I 键还是 M 键。其实我是这样做的:

// If pressed the 'i' key
if ( evt.getKeyCode() == 73) {
    //
}
...

I look out here 并使用示例小程序确定 I 键被识别为 73 代码。

这行得通。

但我在 Mac OS X 上工作,我不知道一旦我尝试在另一个操作系统或 JVM 上运行这个应用程序,它会不会工作。

73 是通用键码吗?是否有某种方法可以对此进行编程,以便它可以在 Windows 上运行并确定按下的键。

谢谢!

【问题讨论】:

    标签: java keyboard


    【解决方案1】:

    哦,您正在寻找 KeyEvent.VK_Whatever 常量。

    if ( evt.getKeyCode() == KeyEvent.VK_I) {
        // user pressed 'i'
    } else if ( evt.getKeyCode() == KeyEvent.VK_M) {
        // user pressed 'm'
    }
    

    请参阅 KeyEvent API 文档了解其余信息。应该有道理。

    【讨论】:

      【解决方案2】:

      只是对 Paul Brinkley 的 answer 的补充。

      73是通用键码吗?

      是的,它是大写字母的ASCII 代码,在这种情况下为“I”。请参阅 KeyEvent.VK_A 的 javadoc

      注意

      尽管有这个巧合,最好不要做类似getKeyCode() == 'A' 的事情——它可能在未来的实现中失败。

      【讨论】:

        【解决方案3】:

        正如其他人所建议的,使用来自KeyEvent 的常量是正确的方法。您可能会喜欢查看此game 的来源;这是KeyEvent 富矿。尽管 Java 具有出色的跨平台支持,但您还是很聪明地进行测试。我使用了两种主要方法:

        • 发布开源演示并寻求反馈。
        • 在 Sun 的 VirtualBox 中运行其他操作系统。

        【讨论】:

          猜你喜欢
          • 2010-12-21
          • 1970-01-01
          • 1970-01-01
          • 2021-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多