Java 系统托盘图标

3

有一个非常简单的教程介绍了如何实现系统托盘图标:http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/

问题是,如果我从Eclipse运行我的应用程序,我可以在托盘中看到图标,但是如果我导出并运行可运行的jar文件,我就看不到它。 我的应用程序中的其他图像都可以正常从同一文件夹加载。

托盘正在工作(左右单击),但是不显示图像,就像您在图像中所看到的(顶部为jar文件,底部为eclipse):

Example of the Missing image

为什么呢?谢谢,对我的英语感到抱歉!

编辑:我最终找到了解决方案,需要使用以下方式访问该图像:

Image img = Toolkit.getDefaultToolkit().getImage(MyClass.class.getResource("/images/asd.png"));
1个回答

1
问题在于您包含图像文件的方式。当您创建JAR文件时,必须将图像包含在其中,并且您需要以不同的方式访问该图像:
try {
    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("wing16.png");
    BufferedImage img = ImageIO.read(is);
}
catch (IOException e) {}

您可以使用img变量在JAR中设置图像。

更新:

将所有类文件和图像复制到命令行:

jar -cvfm Test.jar Manifest.mft *.class image.png

Manifest.mft替换为您的清单文件名称。将image.png替换为您想要显示的图像(如果需要,可以包括更多图像)


当然可以!我遇到了这个错误:Exception in thread "main" java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source) - Laphroaig
抱歉,我忘记添加 try/catch - user372743
抱歉,你的第一个答案在Eclipse中没有错误,但是在JAR文件中仍然无法运行。也许我导入时出了问题,这里已经是凌晨4点了。我明天会再试一次,非常感谢你的帮助! - Laphroaig
1
为了让它能够与“eclipse”和“jar”一起使用,您需要将图像添加到构建路径中。这样做,上面的解决方案将适用于两者! - dacwe
嗨,不知道为什么,但我必须将图像放在项目根文件夹中(我原本将其放在res/images中)。现在我的原始代码也可以正常工作了。非常感谢大家。 - Laphroaig
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接