首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编程关闭Java Tray Balloon

编程关闭Java Tray Balloon
EN

Stack Overflow用户
提问于 2011-09-23 10:43:38
回答 1查看 2.3K关注 0票数 3

我使用java.awt.SystemTray创建和管理托盘图标和气球消息。一切都很好。

但我想知道,在消息显示后,是否有可能关闭或淡出消息。

现在,用户需要单击或关闭气球,否则消息不会消失。

EN

回答 1

Stack Overflow用户

发布于 2011-09-23 14:13:04

我不确定其他平台,但在Windows上,只有当机器在使用时,即用户正在键入什么或移动鼠标时,消息才会消失。如果您不移动鼠标或键入任何内容,消息将停留在原来的位置。

下面的代码为我显示了一条消息。如果我移动鼠标,大约5秒后它就消失了。如果我不这样做,它就会一直存在,直到我移动鼠标或键入某物时,它就消失了。

代码语言:javascript
复制
final TrayIcon ti = new TrayIcon(XTPSkin.getInstance().getAppIcon().getImage());
final SystemTray st = SystemTray.getSystemTray();
st.add(ti);
ti.displayMessage("foo", "bar", MessageType.INFO);

在消息到期之前,没有直接的方法来删除它--但是,您可以删除TrayIcon (如果有必要,可以立即重新添加它,尽管这确实不建议这样做)。删除TrayIcon会导致消息也被删除。

添加到上面的以下代码将导致TrayIcon和消息都被删除:

代码语言:javascript
复制
SwingUtilities.invokeLater(new Runnable(){
    public void run() {
        try {
            Thread.sleep(1000); // Don't do this
            st.remove(ti);
        } catch (InterruptedException ie) {
            // You won't need this when the sleep is removed
        }
    }
});

备注:

AWTException

  • The

  • ,您需要包装上面的第一个代码块,并对第二个块中的Thread.sleep进行异常处理,这完全是为了演示目的。由于这段代码将在AWT线程上执行,所以您不应该在实际的code.

  • Continually删除和以这种方式重新添加TrayIcon中包括睡眠,这可能是个坏主意。由于如果用户正在使用该机器,消息就会消失,所以最好不要这样做。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7527776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档