【问题标题】:Disable Mac character accents menu while my Java app is running在我的 Java 应用程序运行时禁用 Mac 字符重音菜单
【发布时间】:2016-11-21 03:24:56
【问题描述】:

我正在 Swing 中构建 Java 游戏,我遇到了一个问题,即在 Mac 上按住 A 或 S 键太久后,keyPressed 事件停止注册(考虑到游戏使用 WASD 移动,这是一个大问题) .

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

【问题讨论】:

  • “我想知道是否有 Java 原生方法来解决此问题” 没有。
  • 我是这么想的。
  • 来自一个应该是评论的答案:“遇到同样的问题并找到了一个不太完美的解决方法,尽管不确定它是否适用于您的应用程序:stackoverflow.com/a/49783514/8371761”我>
  • @AndrewThompson 如果不是 java-native,那么在启动器脚本中怎么样? defaults write -g ApplePressAndHoldEnabled -bool false 会这样做,但这样做很严厉,因为它会永久影响系统上的每个应用程序。
  • 是的,在 java 中有一个解决方法。请参阅github.com/brackeen/Scared/commit/…(也可参见github.com/TurboVNC/turbovnc/commit/…,这归因于上一个链接)。我在遇到同样问题的应用程序中尝试了这个,它可以工作。

标签: java macos swing


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 2012-07-17
    • 2012-09-09
    相关资源
    最近更新 更多