如何在应用程序位于托盘时隐藏Java SWT程序图标?

10

我知道有很多类似的问题,但是即使我阅读了所有这些内容,我实际上仍然无法解决我的问题。 我有一个Java应用程序,它一启动就在托盘中运行。问题是在Mac上,因为只有在那里图标才会出现在托盘栏和Dock中。 我想要摆脱Dock图标。

我已经尝试了很多次:

  • 尝试将我的jar文件包装在“.app”文件夹中并编写Info.plist文件。 我插入了LSUIElement,并将其设置为“1”或“true”。 这会隐藏应用程序图标,但会显示一个难看的灰色终端式图标,该图标仍留在终端中。

screen

请告诉我您是否有任何想法或其他方法来规避此问题。 谢谢你。


你是用 java 还是 javaw 来启动你的应用程序? - Rob Marrowstone
1
这是哪个版本的SWT?这在SWT 3.5中是一个问题,但在3.6中已经修复了。如果它在3.6或更高版本中出现,那么听起来像是一个回归问题。 - Scott K.
1个回答

11

你可能正在使用错误的属性名称。请看这里:

https://developer.apple.com/library/mac/#documentation/Java/Reference/Java_PropertiesRef/Articles/JavaSystemProperties.html

我认为你想要设置的属性是:

"apple.awt.UIElement"(而不是"LSUIElement")

有两种方法可以实现。你可以传递:

-Dapple.awt.UIElement="true"

你可以将其作为VM参数,或者你可以在Info.plist中设置属性:

<key>Properties</key>
  <dict>
    <key>apple.awt.UIElement</key>
    <string>true</string>
  </dict>

问题涉及 SWT,而不是 AWT。 - Edward Thomson
@EdwardThomson 你试过了吗?所有的苹果Java系统运行时属性都以"apple.awt"或"apple.laf"开头,操作系统应该尊重VM参数。 - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接