#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