我正在使用java.awt.SystemTray
来创建和管理托盘图标和气球消息。一切正常。
但我想知道在显示消息后是否可以关闭或淡出消息。
现在,用户需要点击气球或关闭它,否则消息不会消失。
答案 0 :(得分:2)
我不确定其他平台,但在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
可能是一个坏主意。如果用户使用机器时消息 消失,那么最好不要这样做。