系统托盘中出现多个Java程序

4
我建了一个应用程序,通过SystemTray类隐藏在系统托盘中。 运行还可以,但是当我退出程序并重新启动它时,在鼠标悬停之前它不会从托盘中删除图标。 这样做多次会导致出现多个图标: enter image description here 这是我的程序的问题还是Windows的bug?
我按照这个指南创建了系统托盘图标:this guide

2
你是如何确保在关闭时调用remove的? - Peter Lawrey
1
只是确认一下,你确定之前的应用程序实例已经在任务管理器中关闭了吗? - JayTee
我知道很多程序在崩溃时不会正常退出,而是表现出这种行为。我同意@PeterLawrey的看法:你可能缺少一个systemTray.remove(icon)调用。 - Philipp
啊,你需要调用这个函数吗?谢谢告诉我。但是要调用它,我需要知道用户何时退出应用程序。我能绑定关闭事件吗? - MikkoP
关于编程的内容:+1 有趣。确保在关闭时从托盘中释放图标。 - vels4j
2个回答

6
当创建了一个托盘图标的应用程序被终止时,Windows 不会自动删除托盘图标。只有当用户将鼠标悬停在其上并注意到所属进程不存在时,Windows 才会这样做。
为了确保立即删除图标,您需要在程序退出时调用 systemTray.remove(yourIcon)

1
系统托盘包含一个或多个托盘图标,这些图标是使用add(java.awt.TrayIcon)方法添加到托盘中的。当不再需要它们时,可以使用remove(java.awt.TrayIcon)方法将其移除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接