在java中更改系统托盘图标

时间:2013-07-19 11:34:27

标签: java image swing packaging system-tray

我只想更改应用程序的系统托盘图标图像。我做了两件事 -

刚刚更改了默认程序中的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);

应用程序在两种情况下都会启动,但不会显示图像。它是一个空白的占位符。我做错了什么?

2 个答案:

答案 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) {}