如何在AWT中的托盘栏通知中自定义程序名称?

时间:2017-12-12 01:56:42

标签: java notifications awt

AWT' TrayIcon类有一个名为displayMessage的方法,它显示了Windows 10中的本机操作系统消息:

enter image description here

当这样调用时:

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二进制文件"。当我为我的应用程序构建一个自包含的exe时,它会读取" Blah.exe"如果我只是阅读" Blah"。

,我更喜欢它

通过优秀的JavaFX-Gradle-Plugin使用JavaFX工具链打包应用程序。

4 个答案:

答案 0 :(得分:4)

一种解决方法是使用TrayIcon.MessageType.NONE。在这种情况下,您根本不会获得最后一行,但您无法获得任何 INFO 警告错误图标。

但好处是您可以在显示的消息中获取您的应用程序图标。如果您使用TrayIcon之类的图片创建TrayIcon trayIcon = new TrayIcon(image, "Tooltip"),然后使用JavaFX-Gradle-Plugin打包您的应用,displayMessage方法将重复使用此图片,您将获得以下内容:

答案 1 :(得分:3)

TrayIcon的行为取决于平台。在Mac上,没有“Java(TM)Platform SE binary”这样的东西,也没有可执行文件。

如果你想改变平台上的行为,我猜你可以玩awt.toolkit。看到 https://docs.oracle.com/javase/8/docs/api/java/awt/Toolkit.html#getDefaultToolkit--

答案 2 :(得分:3)

在我的系统上(在Windows 10上尝试了Java 8u151和Java 9.0.1),build.gradle的{​​{1}}的最小设置,我没有找到该名称的任何配置选项,但是我可以控制它:打包器只需要包含我的源的父目录的名称。

示例" Foo Bar":
可执行名称=" FooBar.exe"
显示名称=" Foo Bar"
javafx-gradle-plugin

(我不知道的是,为什么你会看到" Blah.exe"而不是你父目录的名字......)

答案 3 :(得分:2)

要将您发布的屏幕截图中显示的弹出文本更改为Java(TM) Platform SE binary中的Blah.exeBlah,您可以使用Resource Hacker™

Version Info部分FileDescription的值更改为Blah1 VERSIONINFO { BLOCK "StringFileInfo" { BLOCK "00000409" { VALUE "FileDescription", "Blah" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0000 0x0409 } } ,可以在GUI中或在命令行上进行交互。

在下面找到一个需要根据需要进行修改的简单示例。

versioninfo.rc 资源脚本,其中包含VERSIONINFO资源的信息

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 的命令。

url