以编程方式隐藏(但不是退出)OS X上的应用程序

时间:2015-04-19 16:58:10

标签: macos javafx javafx-8

在OS X上,是否有可能(JDK8u40)以编程方式隐藏应用程序,类似于按下Cmd-H的用户通常会实现的?

我没试成功,尝试过:

  • 调用Stage.setIconified
  • 使用先前设置为true的Platform.setImplicitExit选项调用Stage.hide()(=>应用程序保持活动状态,尽管该阶段消失了)
  • 调用Stage.hide()而不使用Platform.setImplicitExit选项(=>应用程序退出)
  • 使用AWT Robot发送Cmd-H快捷方式(生成“关于”框)。

1 个答案:

答案 0 :(得分:1)

您可以在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.