我的Java应用程序使用类似以下代码的方式在系统托盘中显示其图标:
有时我会这样更改图标:
Toolkit mainToolkit = Toolkit.getDefaultToolkit();
SystemTray mainTray = SystemTray.getSystemTray();
Image trayIconImage = mainToolkit.createImage(getClass().getResource(resourcePath));
TrayIcon mainTrayIcon = new TrayIcon(trayIconImage);
mainTray.add(mainTrayIcon);
有时我会这样更改图标:
Image newImage = mainToolkit.createImage(getClass().getResource(otherPath));
mainTrayIcon.setImage(newImage);
有时我的应用程序需要显示一些通知(使用从托盘图标发出的气球消息):
mainTrayIcon.displayMessage(someCaption, msg, TrayIcon.MessageType.NONE);
所有这些代码实际上都是简化的,但非常好地掌握了这个功能。
所以在Windows 7上一切都很好。但事实证明,在Windows 10上显示方式不同。在通知中,左侧显示一个图标。它通常是我的应用程序当前的托盘图标,但有时它只是空白:
在通知的上面的红色圆圈里(在通知上),是那个有时代替我的应用程序图标的空白图标(在系统托盘的下面的红色圆圈上)。我不知道为什么会发生这种情况。我只知道,这只会在应用程序的托盘图标和通知消息在第一个通知消失之前更改时发生。如果显示通知,然后手动淡出/关闭,然后再更改应用程序的托盘图标和通知,下一个通知(带有刚刚设置的新消息)将正确显示应用程序的图标。