【问题标题】:JavaFX application hide OSX dock iconJavaFX 应用程序隐藏 OSX 停靠图标
【发布时间】:2026-01-08 14:20:06
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: java macos javafx icons uielement


    【解决方案1】:

    根据 JavaFX,您无法在 JavaFX 应用程序中隐藏停靠图标。请查看此link

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

    • Apple 标准方式,修改 *.app/Contents/Info.plist 并添加 <key>LSUIElement</key> <string>1</string>
    • 以 AWT 应用程序启动您的应用程序并使用系统属性隐藏停靠图标。设置系统属性后,调用 JavaFX 主方法,JavaFX 应用程序现在将接管,没有停靠图标。请参阅下面的示例代码 sn-p。
    /**
     - 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);
        }
    }
    

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

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

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

    【讨论】:

    【解决方案2】:

    刚刚试了一下。您必须修改 *.app/Contents/Info.plist 并添加

    <key>LSUIElement</key>
    <string>1</string>
    

    简单示例:

        <?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>
    ...
    

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

    【讨论】: