APLICACION EN SYSTEM TRAY CON JAVA
Posted: martes, 11 de mayo de 2010 by Skuarch in Etiquetas: aplicacion a la barra de tareas, barra de tareas, system trayla siguiente aplicacion es un ejemplo de SystemTray con java, esta funcionalidad fue incorporada en java SE 6
Este es un ejemplo basado en un codigo de oracle
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class SystemTrayTest {
private TrayIcon trayIcon = null;
public SystemTrayTest() throws Exception {
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("tray.png");
MouseListener mouseListener = new MouseListener() {
public void mouseClicked(MouseEvent e) {
System.out.println("Tray Icon - Mouse clicked!");
}
public void mouseEntered(MouseEvent e) {
System.out.println("Tray Icon - Mouse entered!");
}
public void mouseExited(MouseEvent e) {
System.out.println("Tray Icon - Mouse exited!");
}
public void mousePressed(MouseEvent e) {
System.out.println("Tray Icon - Mouse pressed!");
}
public void mouseReleased(MouseEvent e) {
System.out.println("Tray Icon - Mouse released!");
}
};
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Exiting...");
System.exit(0);
}
};
PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Exit");
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "Sistema de alarmas ConQuest", popup);
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
trayIcon.displayMessage("Alarma",
"una alarma se a presentado",
TrayIcon.MessageType.WARNING);
}
};
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(actionListener);
trayIcon.addMouseListener(mouseListener);
// Depending on which Mustang build you have, you may need to uncomment
// out the following code to check for an AWTException when you add
// an image to the system tray.
// try {
tray.add(trayIcon);
// } catch (AWTException e) {
// System.err.println("TrayIcon could not be added.");
// }
} else {
System.err.println("System tray is currently not supported.");
}
}
public void alertWarining(String title, String message) {
trayIcon.displayMessage(title, message, TrayIcon.MessageType.WARNING);
}
public void alertError(String title, String message) {
trayIcon.displayMessage(title, message, TrayIcon.MessageType.ERROR);
}
public void alertInfo(String title, String message) {
trayIcon.displayMessage(title, message, TrayIcon.MessageType.INFO);
}
public void alertNone(String title, String message) {
trayIcon.displayMessage(title, message, TrayIcon.MessageType.NONE);
}
} //end class
la clase SystemTrayTest crea una instancia de TrayIcon y verifica si tiene soporte el sistema operativo. implementa los metodos necesarios y crea un menu para mostrar la salida del programa.
la clase SystemTrayTest contiene los metodos alertWarning(), alertError(), alertNone() y alertInfo() para mostrar mensajes en la pantalla
La clase SystemTrayIcon contiene el metodo principal que crea un objeto de SystemTrayTest, utilizando swingWorker
/**
*
* @author skuarch
*/
public class SystemTrayIcon implements Runnable {
java.awt.TrayIcon trayIcon;
java.awt.SystemTray tray;
/**
* Construct.
*/
public SystemTrayIcon() {
super();
} //end SystemTrayIcon
/**
* @param args the command line arguments
*/
public static void main(String... args) {
Thread t = new Thread(new SystemTrayIcon());
t.start();
} //end main
@Override
public void run() {
try {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
SystemTrayTest stt = new SystemTrayTest();
stt.alertWarining("Inicio", "este es un mensaje de inicio");
} catch (Exception ex) {
System.out.println(ex);
}
}
});
} catch (Exception e) {
System.out.println(e);
throw new UnsupportedOperationException("Not supported yet.");
}
} //end run
} //end class
SystemTrayIcon implementa Runnable y dentro del metodo abstracto se crea el siwngWorker.