我正在Swing中构建Java游戏,但遇到一个问题,在Mac上按住A或S键的时间过长,keyPressed事件会停止注册(考虑到游戏使用WASD动作,这是一个很大的问题)。

深入研究Stack Overflow之后,我发现按住这样的键会暂停焦点,因为即使没有出现正常的重音符号列表,它也会尝试打开重音符号菜单。当我在Mac上禁用字符重音菜单时,一切正常。但是,我想知道是否存在Java本地方法来解决此问题(例如KeyListeners的包装器),因为我不希望所有Mac用户都必须处理此问题。

最佳答案

我有the same question,问题是Java版本。

我使用的是JDK 1.8.0_151,但显然在某些迭代中,此问题已得到修复,直到JDK 1.8.0_172。

您可以通过为开发进行更新的JDK来解决该问题,并通过使用org.apache.commons.lang3.SystemUtils检查其Java版本来为用户避免此问题

例如

if(isJavaVersionAtLeast(JavaVersion.JAVA_1_9)) {
    /* Insert message/pop-up to update and give link to Java download
     * You can exit the program using System.exit(0) or send them to the
     * download site or link using Desktop.getDesktop().browse(new URI(url))
     * Where url is the URL of the site or link in the form of a String
}

10-07 16:01
查看更多