在我的Java应用程序运行时禁用Mac角色重音菜单

时间:2016-11-21 03:24:57

标签: java macos swing

我正在使用Swing构建一个Java游戏,我有一个问题,即在Mac上持有A或S键太久后keyPressed事件停止注册(考虑到游戏使用WASD,这是一个大问题运动)。

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

1 个答案:

答案 0 :(得分:1)

我有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
}