Как настроить имя программы в уведомлении в панели задач в AWT?
AWT TrayIcon
класс имеет метод под названием displayMessage
, в котором отображается собственное сообщение ОС, которое в Windows 10 выглядит следующим образом:
![введите описание изображения здесь]()
когда вызывается так:
Image image = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/isotype.png"));
final TrayIcon trayIcon = new TrayIcon(image, appName());
trayIcon.displayMessage("Caption", "Text text text", TrayIcon.MessageType.INFO);
Как настроить строку "Java (TM) Platform SE binary" ). Когда я создаю автономный exe для своего приложения, вместо этого он читает "Blah.exe", в то время как я бы предпочел, чтобы он читал только "Бла".
Чтобы упаковать приложение, я использую toolchain JavaFX через отличный JavaFX-Gradle-Plugin.
Ответы
Ответ 1
Одним из способов решения проблемы является использование TrayIcon.MessageType.NONE
. В этом случае вы не получите последнюю строку, но вы также не получите значок INFO, WARNING или ERROR.
Но хорошо, что вы можете получить значок своего приложения в отображаемом сообщении. Если вы создаете TrayIcon
с некоторым изображением типа TrayIcon trayIcon = new TrayIcon(image, "Tooltip")
, а затем упакуете приложение с помощью JavaFX-Gradle-Plugin, метод displayMessage
будет использоваться повторно это изображение, и вы получите что-то вроде этого:
![]()
Ответ 2
Поведение TrayIcon зависит от платформы. На Mac нет такой вещи, как "Java (TM) Platform SE binary" и исполняемый файл.
Если вы хотите изменить поведение на своей платформе, я думаю, вы могли бы играть с awt.toolkit. Видеть
https://docs.oracle.com/javase/8/docs/api/java/awt/Toolkit.html#getDefaultToolkit--
Ответ 3
В моей системе (попробовал как Java 8u151, так и Java 9.0.1 в Windows 10) с минимальной настройкой build.gradle
из javafx-gradle-plugin, я не нашел какой-либо опции конфигурации для этого имени, но я могу управлять им: пакетщик просто берет имя родительского каталога, содержащего мои источники.
Пример с "Foo Bar":
Исполняемое имя = "FooBar.exe"
Отображаемое имя = "Foo Bar"
![введите описание изображения здесь]()
(То, что я не понимаю, поэтому вы видите "Blah.exe" вместо имени родительского каталога...)
Ответ 4
Чтобы изменить всплывающий текст, который в вашем опубликованном скриншоте отображается как Java(TM) Platform SE binary
в Blah.exe
до Blah
, вы можете использовать, например, Resource Hacker ™.
Измените в разделе Version Info
значение для FileDescription
- Blah
либо интерактивное в графическом интерфейсе, либо в командной строке.
Найдите ниже простой пример, который необходимо изменить для ваших нужд.
versioninfo.rc ресурс script, содержащий информацию для ресурса VERSIONINFO
1 VERSIONINFO
{
BLOCK "StringFileInfo"
{
BLOCK "00000409"
{
VALUE "FileDescription", "Blah"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0000 0x0409
}
}
скомпилировать ресурс script в файл ресурса
ResourceHacker.exe -open versioninfo.rc \
-save versioninfo.res \
-action compile
-log CONSOLE
добавить ресурс к исполняемому файлу
ResourceHacker.exe -open Blah.exe \
-save Blah_new.exe \
-resource versioninfo.res \
-action addoverwrite \
-mask VERSIONINFO,1,0 \
-log CONSOLE
Для полноты здесь команда для извлечения VERSIONINFO
из EXE файла.
ResourceHacker.exe -open Blah.exe \
-save versioninfo.rc \
-action extract \
-mask VERSIONINFO,, \
-log CONSOLE