我有一个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固有的?

最佳答案


  • MSDN says in part How long to notify-在Windows Vista和更高版本中,通知显示的固定持续时间为9秒。
  • 任何更改都只能在Windows大小上保持,但似乎对所有消息有效/适用


  • 您可以创建自己的Traslucent JDialog(也可以实现透明度),以编程方式放置在左下方,淡出将通过Swing计时器
  • 调用

    10-07 19:07
    查看更多