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二进制文件"。当我为我的应用程序构建一个自包含的exe时,它会读取" Blah.exe"如果我只是阅读" Blah"。
,我更喜欢它通过优秀的JavaFX-Gradle-Plugin使用JavaFX工具链打包应用程序。
答案 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.exe
至Blah
,您可以使用Resource Hacker™。
将Version Info
部分FileDescription
的值更改为Blah
到1 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