【问题标题】:Java program appearing multiple times in system trayJava程序多次出现在系统托盘中
【发布时间】:2012-12-30 15:56:36
【问题描述】:

我已经通过 SystemTray 类构建了一个隐藏在系统托盘中的应用程序。工作正常,但是当我退出程序并重新启动它时,它不会在将光标悬停之前从托盘中删除图标。多次这样做会导致出现多个图标:

这是我的程序的问题还是 Windows 的错误?

我跟随this guide创建系统托盘图标。

【问题讨论】:

  • 您如何确保在关机时调用 remove?
  • 刚刚检查,但您确认之前的应用程序实例已经在任务管理器中关闭了吗?
  • 我知道很多程序在崩溃而不是正常退出时会以这种方式运行。我同意@PeterLawrey:您可能缺少 systemTray.remove(icon) 调用。
  • 啊,你要调用这样的函数?谢谢你让我知道。但是要调用它,我需要知道用户何时退出应用程序。可以绑定close事件吗?
  • +1 有趣。确保在关机时从托盘中释放图标

标签: java windows icons system-tray


【解决方案1】:

当创建托盘图标的应用程序终止时,Windows 不会自动删除托盘图标。只有当用户将鼠标悬停在它上面并注意到拥有进程不再存在时,它才会这样做。

为确保图标立即被移除,您必须在程序退出时调用systemTray.remove(yourIcon)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多