Java系统托盘图标

Java系统托盘图标,java,icons,tray,Java,Icons,Tray,有 问题是,如果我从eclipse运行我的应用程序,我可以看到托盘中的图标,但是如果我导出并运行一个可运行的jar文件,我就看不到它。我的应用程序中还有其他图像可以在同一文件夹中正常工作 托盘正在工作(左键和右键单击),但没有显示图像,就像您在图像中看到的那样(顶部是jar文件,底部是eclipse): 为什么??谢谢你,对不起我的英语 编辑:我终于找到了需要通过以下方式访问图像的解决方案: Image img = Toolkit.getDefaultToolkit().getImage(My

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

托盘正在工作(左键和右键单击),但没有显示图像,就像您在图像中看到的那样(顶部是jar文件,底部是eclipse):

为什么??谢谢你,对不起我的英语

编辑:我终于找到了需要通过以下方式访问图像的解决方案:

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

问题在于包含图像文件的方式。创建图像时,必须将图像包含在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
替换为您想要显示的图像(如果需要,您可以包含更多图像)

您好,谢谢您的回答,我的图像包含在jar中,就像我之前说的,我在jframe中包含了其他图像。我正在尝试你的解决方案,但似乎不起作用…是的,当然!!!我有这个错误:线程“main”java.lang.IllegalArgumentException中的异常:input==null!在javax.imageio.imageio.read(未知源代码)抱歉,我忘了添加
try/catch
抱歉,您的第一个答案在eclipse中没有错误,但在jar中没有。也许我第一次导入错误,我不在这里。我明天再试一次,非常感谢你的帮助!要让它同时使用“eclipse”和“jar”,您需要将映像添加到构建路径中。这样做,上面的解决方案将对两者都有效!