如何让Java TrayIcon消息淡出?

时间:2013-04-19 10:53:53

标签: java swing system-tray trayicon

我有一个Java应用程序,当按下红叉时会缩小到系统托盘中。

每当发生这种情况时,我会显示一条消息,通知用户该应用程序仍在系统托盘中运行。

以下是代码:

...

    @Override
    public void windowClosing(WindowEvent e) {
       try {
            tray.add(trayIcon);
            trayIcon.displayMessage("", "The application has been reduced
                 in the system tray, to stop it, press the \"Quit\" button", 
                 TrayIcon.MessageType.WARNING);
            setVisible(false);
        } catch (AWTException ex) {
            System.out.println("unable to add to tray");
        }
    }
...

目前,如果用户点击该消息,该消息将消失。

我想设置一个计数器,这样即使没有做任何事情,消息也会在几秒后淡出。

有没有人知道一个很好的方法,因为我似乎找不到任何现有的方法。

修改

我必须纠正我的问题,事实上,经过一段时间的测试后,它会在7-8秒后自动消失,但我觉得它有点太长了。此外,它只会在用户执行操作(移动鼠标或在键盘上键入)时消失

所以新的问题是:有没有办法通过配置Java应用程序来减少淡出时间并改变消息行为,还是Windows固有的?

1 个答案:

答案 0 :(得分:3)

  

所以新的问题是:有没有办法减少淡出   通过配置Java应用程序的时间还是Windows固有的?

  • MSDN says in part How long to notify - 在Windows Vista及更高版本中,通知会显示固定的9秒钟。

  • 任何更改都可以仅维护在Windows大小上,但似乎对所有消息都有效/适用


  • 你可以创建自己的Traslucent JDialog(透明度可能也是这样)以编程方式放置在左下角,淡出将从Swing Timer调用