Cómo implementar la función de bandeja del sistema en Java.
Diagrama de ejemplo
Diagrama de estructura del paquete del proyecto
Captura de pantalla del funcionamiento del sistema.
Aplicando la descripción lógica central, ocultar en la bandeja significa esencialmente ocultar el formulario. Es decir, setVisible (falso), y mostrar el formulario significa setVisible (true).
El código del proyecto es el siguiente:
importar java.awt.AWTException;
importar java.awt.MenuItem;
importar java.awt.PopupMenu;
importar java.awt.SystemTray;
importar java.awt.TrayIcon;
importar java.awt.event.ActionEvent;
importar java.awt.event.ActionListener;
importar java.net.URL;
importar javax.swing.ImageIcon;
importar javax.swing.JFrame;
importar javax.swing.JMenu;
importar javax.swing.JMenuBar;
importar javax.swing.JMenuItem;
la clase pública MainFrame extiende JFrame implementa ActionListener{
serialVersionUID largo final estático privado = -7078030311369039390L;
menú JMenu privado;
JMenuBar privado jmenuBar;
cadena privada [] jmItemName = {"Colocar en bandeja","Salir del sistema"};
Marco principal público(){
super("guía telefónica");
inicio();
this.setSize(500,400);
this.setJMenuBar(jmenuBar);
this.setLocationRelativeTo(nulo);
bandeja del sistema(); //bandeja del sistema
}
/**
* Interfaz de inicialización
*/
inicio público vacío(){
menu = new JMenu("Formulario del sistema");
for(int i=0; i<jmItemName.length; i++){
JMenuItem menuItem = nuevo JMenuItem(jmItemName[i]);
menuItem.addActionListener(esto);
menú.add(menúItem);
}
this.jmenuBar = nuevo JMenuBar();
this.jmenuBar.add(menú);
}
@Anular
acción vacía pública realizada (ActionEvent e) {
Acciones de cadena = e.getActionCommand();
if("Colocar en bandeja".equals(acciones)){
this.setVisible (falso);
}
if("Salida del sistema".equals(acciones)){
Sistema.salir(0);
}
}
/**Procesamiento del icono de la bandeja del sistema.*/
bandeja del sistema vacío privado(){
if(SystemTray.isSupported()){ //Determine si el sistema admite la función de bandeja.
recurso URL = this.getClass().getResource("systray.jpg"); //Obtener la ruta de la imagen
ImageIcon icon = new ImageIcon(recurso); //Crear objeto de imagen
PopupMenu popupMenu = new PopupMenu(); //Crea un objeto de menú emergente
MenuItem itemExit = new MenuItem("Salir del sistema"); //Crea el elemento de salida en el menú emergente.
MenuItem itemShow = new MenuItem("Mostrar formulario"); //Crea un elemento de formulario principal para mostrar en el menú emergente.
itemExit.addActionListener(new ActionListener() { //Agregar un detector de eventos a la imagen de salida
@Anular
acción vacía pública realizada (ActionEvent e) {
Sistema.salir(0);
}
});
itemShow.addActionListener(new ActionListener() { //Agrega un detector de eventos para minimizar el formulario.
@Anular
acción vacía pública realizada (ActionEvent e) {
setVisible(verdadero);
}
});
popupMenu.add(itemSalir);
popupMenu.add(itemShow);
TrayIcon trayIcon = new TrayIcon(icon.getImage(),"Sistema de agenda telefónica",popupMenu);
SystemTray sysTray = SystemTray.getSystemTray();
intentar {
sysTray.add(bandejaIcon);
} captura (AWTException e1) { }
}
}
/**
* Método principal
* argumentos @param
*/
público estático vacío principal (String [] argumentos) {
nuevo MainFrame().setVisible(verdadero);
}
}