在我的项目中,我使用系统托盘,当我编译程序时,一切正常,我用于系统托盘的图标显示出来。
图标放在项目文件夹中,与图标相关的代码为
Image icon = Toolkit.getDefaultToolkit().getImage("Icon.png");
trayIcon = new TrayIcon(icon, "Program name", popup);
trayIcon.setImageAutoSize(true);
tray.add(trayIcon);
正如我所说的,一切正常,但当我将项目导出为可运行的jar时,程序将会运行,但图标不会显示,但它只是空白。
答案 0 :(得分:6)
如果您想从.jar文件中加载资源,请使用getClass().getResource()
。这将返回一个具有正确路径的URL。
Image icon = ImageIO.read(getClass().getResource("image´s path"));
答案 1 :(得分:5)
要访问jar中的图像,请使用Class.getResource()
。
我通常做这样的事情:
InputStream stream = MyClass.class.getResourceAsStream("Icon.png");
if(stream == null) {
throw new RuntimeException("Icon.png not found.");
}
try {
return ImageIO.read(stream);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
stream.close();
} catch(IOException e) { }
}