Les comento primero que las notificaciones en el Tray son los iconos que se encuentran a la izquierda de la hora en Windows.
Bueno, encontré una clase para poder crear en java un objeto con acciones y opciones.
La clase la estuve modificando un poco para que en el constructor reciba los parámetros necesarios para que está clase sea genérica y se pueda llamar desde otra clase e independizarse de la clase SystemTray y poder hacer más de una.
El constructor tiene los parámetros:
String sPathImgIcon (Que es el path donde se encuentra el icono que va a mostrar en las notificaciones)
Vector vMenuActionListener (Que contiene los action listeners que va a escuchar el iconito cuando le haces click derecho y se despliega un menu en pop-up)
Vector vMenuActionListenerNames (Que contiene los nombres que se mostrarán en el menu que están relacionados con los action listeners del vector anterior)
String sToolTip (Es el texto que muestra cuando dejas el cursor encima del icono)
ActionListener al (Es el evento que se efectua al hacer doble click en el icono)
package codigos;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class ThrSystemTray {
public ThrSystemTray(String sPathImgIcon,Vector vMenuActionListener, Vector vMenuActionListenerNames, String sToolTip, ActionListener al) {
//se verifica que el SystemTray sea soportado
if (SystemTray.isSupported()) {
//se obtiene una instancia estática de la clase SystemTray
SystemTray tray = SystemTray.getSystemTray();
//esta es la Imagen de icono
Image ImagenIcono = Toolkit.getDefaultToolkit().getImage(sPathImgIcon);
//este listener nos permite capturar cualquier tipo de evento
//que se haga con el mouse sobre el icono
MouseListener mouseListener = new MouseListener() {
public void mouseClicked(MouseEvent e) {
//System.out.println("Icono del System Tray - Mouse clicked!"; );
}
public void mouseEntered(MouseEvent e) {
//System.out.println("Icono del System Tray - Mouse entered!"; );
}
public void mouseExited(MouseEvent e) {
//System.out.println("Icono del System Tray - Mouse exited!"; );
}
public void mousePressed(MouseEvent e) {
//System.out.println("Icono del System Tray - Mouse pressed!"; );
}
public void mouseReleased(MouseEvent e) {
//System.out.println("Icono del System Tray - Mouse released!"; );
}
};
//Se agregan los listeners que se obtuvieron por parametro
//menu que aparece al hacer click derecho
PopupMenu popup = new PopupMenu();
MenuItem item ;
for (int i = 0 ; i < vMenuActionListener.size() ; i++){
item = new MenuItem(vMenuActionListenerNames.get(i).toString());
item.addActionListener((ActionListener) vMenuActionListener.get(i));
popup.add(item);
}
//iniciamos el objeto TrayIcon
iconoSystemTray = new TrayIcon(ImagenIcono, sToolTip, popup);
iconoSystemTray.setImageAutoSize(true);
//este tipo de listener captura el doble click sobre el icono
iconoSystemTray.addActionListener(al);
iconoSystemTray.addMouseListener(mouseListener);
//se debe capturar una excepción en caso que falle la adicion de un icono
try {
tray.add(iconoSystemTray);
} catch (AWTException e) {
System.err.println("No es posible agregar el icono al System Tray"; );
}
}
else
System.err.println("Tu sistema no soporta el System Tray"; );
}
public void setToolTip(String tooltip){
iconoSystemTray.setToolTip(tooltip);
}
//se declara el objeto tipo icono
private TrayIcon iconoSystemTray;
}