He visto desde here cómo usar la bandeja. Así lo uso de esta forma:Cómo poner la aplicación Java en Systemtray cuando el usuario hace clic en Cerrar ventanas
private void checkTray() throws IOException {
if (SystemTray.isSupported()) {
System.out.println("system tray supported");
tray = SystemTray.getSystemTray();
Image image = ImageIO.read(new FileInputStream(new File("logo.png")));
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);
defaultItem = new MenuItem("Open");
defaultItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(true);
setExtendedState(JFrame.NORMAL);
}
});
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "SystemTray Demo", popup);
trayIcon.setImageAutoSize(true);
}
addWindowStateListener(new WindowStateListener() {
public void windowStateChanged(WindowEvent e) {
if (e.getNewState() == ICONIFIED) {
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to tray");
}
}
if(e.getNewState() == WindowEvent.WINDOW_CLOSING){
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to system tray");
}
}
if (e.getNewState() == 7) {
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to system tray");
}
}
if (e.getNewState() == MAXIMIZED_BOTH) {
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
if (e.getNewState() == NORMAL) {
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
}
});
}
y en el constructor:
this.setDefaultCloseOperation(JFrame.ICONIFIED);
Cuando hago clic en cerrar las ventanas, mi solicitud no va a probar el sistema, pero se cierra en sí. ¿Cómo puedo resolverlo? ¿alguien me puede ayudar?
Desde cuándo 'JFrame.ICONIFIED' se convierte en un valor de [setDefaultCloseOperation()] (http://docs.oracle.com/javase/6/docs/api/ javax/swing/JFrame.html # setDefaultCloseOperation (int)? WindowConstants http://docs.oracle.com/javase/6/docs/api/javax/swing/WindowConstants.html – ecle
entonces tengo que usar Nothing_on_close? – JackTurky
Sí, ya que desea 'establecerVisible (verdadero)' para hacer que el marco sea visible de nuevo. – ecle