Java:接收通知时如何闪烁trayicon?

时间:2014-04-02 20:24:39

标签: java trayicon

收到通知后需要闪烁托盘图标。为此我有两张图片。我正在使用Thread runnable()并以一定的间隔使线程休眠,添加和删除图像。这工作正常,但当闪烁时,任务栏中的所有其他托盘图标也会闪烁。不确定这是否是一个好方法。

new Thread(new Runnable() {
    public void run() {
        try {

            for(int i=0; i<count; i++) {
                remove(Image2);
                add(Image1)
                long intratime=1001*1l;
                Thread.sleep(intratime);
                remove(Image1);
                add(Image2);
                long intertime=1001*1l;
                Thread.sleep(intertime);
            }

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
}}).start();

3 个答案:

答案 0 :(得分:0)

不确定您是如何通过Thread runnable()实现此目的的 您可以使用TrayIcon创建托盘图标。要添加弹出窗口,您可以使用方法setPopupMenu(PopupMenu popup)功能。

答案 1 :(得分:0)

使用空白图标或不同颜色的图标

简单替换TrayIcon的图像

答案 2 :(得分:0)

您不应删除添加完整的TrayIcon,而应替换TrayIcon的图片,例如像这样:

new Thread(new Runnable() {
    public void run() {
        try {
            TrayIcon trayIcon = new TrayIcon(Image1);
            SystemTray.getSystemTray().add(trayIcon);
            long intratime=1001*1l;
            for(int i=0; i<count; i++) {
                Thread.sleep(intratime);
                trayIcon.setImage(Image2);
                Thread.sleep(intratime);
                trayIcon.setImage(Image1);
            }
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
}}).start();

原因:每次从systemtray添加或删除trayicon时,操作系统可能会重新排列其他当前显示的图标。但是当你只是替换图标图像时,就不会出现重新排列。