我在使用
但是我想知道是否有可能在消息显示后关闭或淡化它。
现在,用户需要点击气球或关闭它,否则消息将不会消失。
java.awt.SystemTray
来创建和管理托盘图标以及气泡消息。一切都运作良好。但是我想知道是否有可能在消息显示后关闭或淡化它。
现在,用户需要点击气球或关闭它,否则消息将不会消失。
java.awt.SystemTray
来创建和管理托盘图标以及气泡消息。一切都运作良好。我不确定其他平台,但在Windows上,只有当计算机正在使用时 - 即用户正在键入或移动鼠标时,消息才会消失。如果您不移动鼠标或键入任何内容,则消息将保留在原地。
以下代码为我显示了一条消息。如果我移动鼠标,它会在大约5秒后消失。如果我不移动鼠标或键入任何内容,则消息会一直保留,直到我移动鼠标或键入内容,此时它会消失。
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
和消息:
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
的异常处理。Thread.sleep
仅用于演示目的。由于此代码将在AWT线程上执行,因此在实际代码中不应该包含该睡眠。TrayIcon
可能是一个坏主意。由于如果用户正在使用机器,则消息确实会消失,因此最好不要这样做。