#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);
}