JavaFX 应用程序隐藏 OSX 停靠栏图标

use*_*646 2 java macos icons javafx uielement

我需要隐藏我的 javafx 应用程序的停靠栏图标。在普通的 Java 应用程序中,这可以通过以下属性实现:

System.setProperty("apple.awt.UIElement", "true");

但是,这似乎不适用于 JavaFX。

谢谢!

小智 7

根据 JavaFX,您不能在 JavaFX 应用程序中隐藏停靠栏图标。请查看此链接

有两种方法可以隐藏停靠栏图标。

  • Apple 标准方式,只需修改 *.app/Contents/Info.plist 并添加 <key>LSUIElement</key> <string>1</string>.
  • 将您的应用程序作为 AWT 应用程序启动并使用系统属性隐藏停靠栏图标。设置系统属性后调用 JavaFX 主方法,JavaFX 应用程序将接管现在没有停靠栏图标。请参阅下面的示例代码片段。
/**
 - This class is intended to start application as AWT application before initializing
 - JavaFX application. JavaFX does not support dock-icon-less application so we are 
 - creating JavaFX application from AWT application so that we can achieve the desired
 - functionality.
 - */

public class AWTMain {

    public static void main(String[] args) {

        // This is awt property which enables dock-icon-less
        // applications 
        System.setProperty("apple.awt.UIElement", "true");
        java.awt.Toolkit.getDefaultToolkit();

        // This is a call to JavaFX application main method.
        // From now on we are transferring control to FX application. 
        FXMain.main(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里 FXMain 被称为具有 main 方法的前一个类。

如果您也在使用 maven 和其他提到应用程序主类的地方,您还需要修改 .pom 文件。

这是我在这里的第一个答案,很抱歉格式化。


Chr*_*ris 4

刚刚尝试过。您必须修改 *.app/Contents/Info.plist 并添加

<key>LSUIElement</key>
<string>1</string>
Run Code Online (Sandbox Code Playgroud)

简单的例子:

    <?xml version="1.0" ?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
     <dict>
     <key>LSUIElement</key>
    <string>1</string>
...
Run Code Online (Sandbox Code Playgroud)

对我来说,它适用于捆绑的 javaFX 应用程序