Список действий в сообщение в системном трее с java

#java #netbeans #message #actionlistener #system-tray

Вопрос:

Есть ли способ настроить прослушиватель действий для сообщения в системном трее, сгенерированного с помощью java? Я попробовал код для этого, и он работает не так, как я хочу. Я хочу открыть файл, когда нажимаю на сообщение в трее.

Вот мой код:

 package com.Codes;

import java.awt.AWTException;
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class TrayMessage {

    public String mainMsg;
    public Image Image;
    public String subMsg;
    public String toolTip;
    public MessageType MsgType;
    public String path = "";

public TrayMessage(String mainMsg, String Image, String subMsg, String toolTip, MessageType messageType) {
        this.mainMsg = mainMsg;
        this.Image = Toolkit.getDefaultToolkit().createImage(Image);
        this.subMsg = subMsg;
        this.toolTip = toolTip;
        this.MsgType = messageType;
    }
public void display() throws AWTException, MalformedURLException {
        SystemTray tray = SystemTray.getSystemTray();
        TrayIcon trayIcon = new TrayIcon(Image);
        trayIcon.setImageAutoSize(true);
        trayIcon.setToolTip(toolTip);
        if (path != null amp;amp; !path.equals("")) {
            trayIcon.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    try {
                        if (new File(path).exists()) {
                            CommonMethods.Document(path);\A method to execute a file path
                        }
                        trayIcon.removeActionListener(this);
                        tray.remove(trayIcon);
                    } catch (IOException ex) {
                        Logger.getLogger(TrayMessage.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            });
        }
        tray.add(trayIcon);
        trayIcon.displayMessage(mainMsg, subMsg, MsgType);
    }