在 OS X 上以编程方式隐藏(但不退出)应用程序
Programmatically hide (but not quit) application on OS X
在 OS X 上,是否有可能 (JDK8u40) 以编程方式隐藏应用程序,类似于用户按 Cmd-H 通常实现的效果?
我尝试过,但没有成功:
- 呼叫Stage.setIconified
- 使用先前设置为 true 的 Platform.setImplicitExit 选项调用 Stage.hide()(=> 应用程序保持活动状态,尽管舞台消失)
- 在没有 Platform.setImplicitExit 选项的情况下调用 Stage.hide()(=> 应用程序已退出)
- 使用 AWT Robot 发送 Cmd-H 快捷方式(改为生成“关于”框)。
您可以在 OS X 上执行此操作,例如使用 Eclipse SWT 的 Cocoa 本机绑定。这可能不是最优雅的解决方案,但它应该可以工作。如果您在项目中包含以下依赖项(请确保在您的 运行 配置中禁用 -XstartOnFirstThread)
<dependency>
<groupId>org.eclipse.swt.org.eclipse.swt.cocoa.macosx.x86_64.4.3.swt</groupId>
<artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
<version>4.3</version>
</dependency>
可以打电话
OS.objc_msgSend(NSApplication.sharedApplication().id,
OS.sel_hide_);
这将调用与 CMD-h 触发的完全相同的过程,因此当然只能在 OS X 上工作。
在 OS X 上,是否有可能 (JDK8u40) 以编程方式隐藏应用程序,类似于用户按 Cmd-H 通常实现的效果?
我尝试过,但没有成功:
- 呼叫Stage.setIconified
- 使用先前设置为 true 的 Platform.setImplicitExit 选项调用 Stage.hide()(=> 应用程序保持活动状态,尽管舞台消失)
- 在没有 Platform.setImplicitExit 选项的情况下调用 Stage.hide()(=> 应用程序已退出)
- 使用 AWT Robot 发送 Cmd-H 快捷方式(改为生成“关于”框)。
您可以在 OS X 上执行此操作,例如使用 Eclipse SWT 的 Cocoa 本机绑定。这可能不是最优雅的解决方案,但它应该可以工作。如果您在项目中包含以下依赖项(请确保在您的 运行 配置中禁用 -XstartOnFirstThread)
<dependency>
<groupId>org.eclipse.swt.org.eclipse.swt.cocoa.macosx.x86_64.4.3.swt</groupId>
<artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
<version>4.3</version>
</dependency>
可以打电话
OS.objc_msgSend(NSApplication.sharedApplication().id,
OS.sel_hide_);
这将调用与 CMD-h 触发的完全相同的过程,因此当然只能在 OS X 上工作。