我只想更改应用程序的系统托盘图标图像。我做了两件事 -
刚刚更改了默认程序中的URL -
final TrayIcon trayIcon = new TrayIcon(createImage("images/Graph.png", "tray icon"));
第二次尝试 -
Image img = Toolkit.getDefaultToolkit().getImage("images/Graph.png");
final TrayIcon trayIcon = new TrayIcon(img, "Application Name", popup);
应用程序在两种情况下都会启动,但不会显示图像。它是一个空白的占位符。我做错了什么?
答案 0 :(得分:4)
images/Graph.png
不是jar中图片的有效网址。因此,我猜你的第二次尝试img
为空。
我建议你这样:
//Get the URL with method class.getResource("/path/to/image.png")
URL url = System.class.getResource("/images/Graph.png");
//Use it to get the image
Image img = Toolkit.getDefaultToolkit().getImage(url);
final TrayIcon trayIcon = new TrayIcon(img, "Application Name", popup);
您还应确保images/
在您的类路径中。
答案 1 :(得分:2)
问题在于您将图片文件包含在. jar
内,使用getResource()
或getResourceAsStream
的方式,请尝试以下方式:
try {
InputStream inputStream= ClassLoader.getSystemClassLoader().getResourceAsStream("/images/Graph.png");
//or getResourceAsStream("/images/Graph.png"); also returns inputstream
BufferedImage img = ImageIO.read(inputStream);
final TrayIcon trayIcon = new TrayIcon(img, "Application Name", popup);
}
catch (IOException e) {}