java - 我可以阻止 java 告诉 macOS 窗口管理器将焦点从当前窗口移开吗?

标签 java macos

我正在执行一个 shell 脚本,该脚本执行一系列 java 命令。但即使我从命令行执行java,问题仍然存在。最重要的是,java 更改了应用程序菜单栏,但其他命令(例如 ls、rm、mv)的行为并非如此。

当脚本运行时,我将窗口焦点更改为其他内容。每次脚本执行 java 时,窗口管理器都会将焦点从当前窗口移开并将其交给 java(从而 macOS 当前应用程序菜单栏外观反射(reflect)了 java 命令)。

然后,当 java 命令完成时,焦点将返回到当前窗口,并且 macOS 当前应用程序菜单栏将返回到之前的状态。

窗口焦点变化的频率让我想起了不止一部大卫·林奇的作品。但危险在于键盘焦点。一次误击的按键让我感到有点困惑/生气。

我曾隐约希望使用 -Dapple.laf.useScreenMenuBar=false 会产生意想不到但积极的副作用,但没有任何改变。

我已经忍受这种行为很长一段时间了,所以我不知道这种行为何时会被引入。无论如何,我使用的是 macOS 10.13.6 和 java 1.8.0_171,我的 shell 是 bash(但没有奇怪的别名或提示)。

最佳答案

设置-Djava.awt.headless=true以与本 map 形环境断开连接运行。

参见Using Headless Mode in the Java SE Platform .

关于java - 我可以阻止 java 告诉 macOS 窗口管理器将焦点从当前窗口移开吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51974022/

相关文章:

java - 获取高亮变量-Eclipse

java - Spring Boot JPA如何使用实体类从表中选择特定列?

c++ - 在 Yosemite 上的 GCC 编译期间不再可能包含 Carbon header ?

ios - 即使 Mac 进入休眠状态,如何让 BLE 运行?

swift - 使用 NSTask 运行多个终端命令

Java - Jena API - 获取另一个类的属性

java - 如何更新启用 NETCONF 的设备上的配置?

xcode freetype ld 符号未找到架构 x86_64

swift - 如何在 10.15 之前的 macOS 上获取 NSScreen 的本地化名称?

java - 对于Java BigInteger类,有没有办法定义一个具有多个条件的if语句,并用逻辑运算符分隔?