Antes vimos como Minimizar una aplicación .NET a la Tray Bar. En esta ocasión, minimizaremos a la barra tray una aplicación Java.

Basado en el artículo de SDN, este es el resuemn de los pasos a seguir:
private SystemTray tray;
private final TrayIcon trayIcon;
menuItemRestore.setText("Restaurar");
menuItemRestore.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuItemRestoreActionPerformed(evt);
}
});
popupContextual.add(menuItemRestore);
popupContextual.add(separator);
menuItemSalir.setText("Salir");
menuItemSalir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuItemSalirActionPerformed(evt);
}
});
popupContextual.add(menuItemSalir);
private void menuItemSalirActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
if ( evt.getNewState() == ICONIFIED) {
this.setState(NORMAL);
this.setVisible(false);
if (SystemTray.isSupported()) {
tray = SystemTray.getSystemTray();
MouseListener mouseListener = new MouseListener( ) {
public void mouseClicked(MouseEvent e) {
if ( e.getButton()==e.BUTTON1 ) {
trayIcon.displayMessage("AppTray", "Haz hecho clic sobre mi!",TrayIcon.MessageType.INFO);
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
popupContextual.setLocation(e.getX(), e.getY());
popupContextual.setInvoker(popupContextual);
popupContextual.setVisible(true);
}
}
};
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(mouseListener);
trayIcon.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
menuItemRestoreActionPerformed(e);
}
}
);
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("No se pudo agregar el ícono a la barra tray");
this.setVisible(true);
}
} else {
// System Tray is not supported
}
}
}
Descargar el proyecto de ejemplo AppTray (desarrollado en NetBeans 6.0)
11 Respuestas para "Minimizar una aplicación Java a la Tray Bar"
Veo que es para Java 6. Para versiones anteriores tienes, o bien el SysTray for Java, o bien a través de SWT. Si te interesan los ejemplos, te los puedo conseguir
Así es, es para Java 6
. Gracias por el comentario.
que ventaja tiene hacerlo con 1.6? y no con java 1.4?
gracias.
Uhh pero que buen ejemplo, ya mismo intento ponerlo en práctica y te aviso como me fue…
buenas…justo lo estaba buscando. Tengo un problema intente usarlo y anda bien pero cuando pongo otra imagen distinta a la que usaste en el ejemplo no puedo ver la imagen en la barra de tarea. Probe con varias…y nada. Como puedo solucionar el problema??
Gracias
Oye amigo, te faltó explicar que hay que agregar un windowstatechanged a la ventana…muy buena aportacion. Gracias sigue así (bueno esta entrada es vieja, pero espero que sigas así jejeje).
No sirve del todo bien, lo compilé y lo ejecuté y cuando minimizas no desaparece la ventana (se queda visible) y además cuando le das click al icono del traybar solo aparece el dialogo de “Haz click derecho” pero sin el menú.
Me podrías ayudar, es tu código el proyecto AppTray (sin cambios, es que quería ver porque a mi no me funcionaba, descargué tu código y se comporta igual)
ya lo hice bien! =)…pero sin tu ayuda no hubiera podido, si quieres date una vuelta a mi blog para que veas como es la solucion completa (al menos en gnu/linux).
Hola amigo, se puede poner una imagen gif animada que se mueva cuando este minimizada como por ejemplo el del antivirus.
Muy bueno, justo lo estaba buscando…. Gracias
tengo un problema al hacerlo en mi programa, me dice que debo inicializar la variable trayIcon y si la pongo como null no me aparece el error pero al momento de ejecutarlo y minimizrlo aparece un error y no lo veo en la barra de tareas, tu programa si funciona correctamente
Comentarios: