Приложение JavaFX скрыть значок док-станции OSX

#java #macos #javafx #icons #uielement

#java #macos #javafx #Значки #пользовательский интерфейс

Вопрос:

Мне нужно скрыть значок док-станции моего приложения javafx. В обычном приложении Java это может быть достигнуто с помощью следующего свойства:

System.setProperty(«apple.awt.UIElement», «true»);

Однако, похоже, это не работает с JavaFX.

Спасибо!

Ответ №1:

Согласно 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);
    }
}
 

Здесь FXMain упоминается как предыдущий класс с методом main.

Вам также необходимо будет изменить ваш файл .pom, если вы используете maven и другие места, где вы упомянули основной класс для приложения.

Это мой первый ответ, поэтому извините за форматирование.

Комментарии:

1. Изменение просто plist.info не сработало у меня на BigSur (также см. bugs.openjdk.java.net/browse/JDK-8092032 ). Использование кода из этого ответа работало, не касаясь plist.info .

Ответ №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