java - Mac 状态栏项目但不在 Dock 上

标签 java macos statusbar dock headless

我正在尝试在 Mac 上制作一个 java 应用程序,在状态栏中放置一个图标,但我不想要 Mac dock(纸上有咖啡杯的那个)上的 jar 图标。所以我尝试使用 System.setProperty(java.awt.headless, true) 技术,但后来我无法在 SystemTray 菜单栏中放置任何内容,因为我得到了 HeadlessException。如果有人知道解决此问题的方法,我们将不胜感激。

最佳答案

这很容易......如果你知道怎么做:)

首先将你的 jar 文件打包到一个 mac 应用程序包中

然后进入生成的包的内容并打开 info.plist。 只需添加 LSUIElement 属性并将其设置为 1。这会在启动时从停靠栏中删除应用程序。 也可以在这里查看苹果文档:http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html


为了完整性:还有另一种方法可以做到这一点,但它要痛苦得多。 有一个 cocoa 命令允许您动态显示/隐藏停靠栏图标: SetSystemUIMode (https://developer.apple.com/library/mac/#documentation/Carbon/reference/Dock_Manager/Reference/reference.html) 您可以尝试使用 rococoa 调用此命令或编写您自己的 jni 库。 或者我会有一个 xcode 项目,它在我的 github 帐户中做一些非常相似的事情 - 隐藏菜单栏 - https://github.com/kritzikratzi/jAppleMenuBar/ 您只需更改 src/native/jAppleMenuBar.m 文件中的一些参数。

关于java - Mac 状态栏项目但不在 Dock 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663490/

相关文章:

java - LWJGL Java 碰撞

java - Hashmap 中的用户名/密码查找

android - 如何更改 kitkat 和 lollipop 中的状态栏图标颜色?

ios - ViewControllerBased,带有透明导航 Controller 的轻型内容状态栏

android - Activity 的状态栏颜色无明显原因不同

java - 如何解决找不到 com.google.cloud.Service 的类文件

java - 仅向登录用户显示注销按钮

ruby - RVM 不断在 MAC 中设置 ruby​​ 1.8.7 而不是最新版本 1.9

swift - CGContext.init 返回 nil

macos - 在 OS X 上禁用 Jenkins 自动启动