3

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

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

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

4

2 回答 2

4

images/Graph.png不是位于您的 jar 中的图像的有效 URL。因此,我想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/在您的类路径中。

于 2013-07-19T11:41:56.207 回答
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) {}
于 2013-07-19T11:46:19.833 回答