1

我以displayMessage()这种方式使我的可点击(感谢stackoverflow!):

public class Tray {
    private static class ShowMessageListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            trayIcon.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (openBrowser == 1) {

                        Desktop desktop = Desktop.isDesktopSupported() ? Desktop
                                .getDesktop() : null;
                        if (desktop != null
                                && desktop.isSupported(Desktop.Action.BROWSE)) {
                            try {
                                desktop.browse(URI.create(link));
                            } catch (Exception e2) {
                                LogError.get(e2);
                            }
                        }
                    }
                    openBrowser = 0;
                }
            });
            trayIcon.displayMessage("Finished", link,
                    TrayIcon.MessageType.INFO);
        }
    } //ShowMessageListener class end
invisibleItem.addActionListener(new ShowMessageListener());
}

我正在调度事件以显示消息:

Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new ActionEvent(Tray.invisibleItem, ActionEvent.ACTION_PERFORMED, "asd", 1, 0));

一切都很好,消息是可点击的。它是完美的,直到我意识到那ActionListener也是在听TrayIcon。如果用户没有点击消息,TrayIcon将在下一次点击时获取事件并打开网站。

这是我的问题:如何检查是否displayMessage()消失了?

4

0 回答 0