Java Swing TrayIcon气球消息 - 实现与主图标不同的actionlistener?

时间:2015-05-06 09:28:30

标签: java swing notifications trayicon

我有一个TrayIcon,偶尔会通过displayMessage()显示弹出/气球消息。 TrayIcon本身有一个ActionListener可以正常工作。根据文档,至少在某些平台(例如Win 8)上,点击消息气泡本身会触发图标的监听器事件。
到目前为止一切顺利,但我想为

实现单独的行为
  1. 用户单击系统托盘中的图标本身
  2. 用户点击消息气泡(在这种情况下,什么都不做)
  3. 有这种优雅的方式吗?
    我认为可能有一个ActionEvent的属性传递给ActionListener.actionPerformed(),它可以区分点击的两个来源,但是找不到。

    有什么想法吗?该应用程序只能在Windows上运行,如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

每当我使用我的休息服务推送消息时,我有一种方法可以在系统托盘图标上的气球中显示消息。您可以向显示的消息添加动作侦听器,您可以使用该动作侦听器在actionperfomed方法中执行任何操作。

public void displayMessage(String psTitle, String psMessage, final MessageType poType){
    moTrayIcon.displayMessage(psTitle, psMessage, poType);
    moTrayIcon.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                Desktop dst = Desktop.getDesktop();
                String location = "D:\\dev";
                dst.open(new File(location));
                //location = "D:\\"; // again setting root location                    
            } catch (Exception ex) {
                LOGGER.error("------- error with folder opening double click "
                        + ex.getMessage());
            }

        }
    });

}