La bandeja del sistema en el escritorio significa que cuando el programa se minimiza o se presiona el botón de cerrar, el programa no sale, sino que se minimiza en el área de estado de la tarea (sistema Windows cuando el mouse hace clic en el icono). área, hay indicaciones y otras operaciones. En Microsoft Windows se llama "Área de estado de la barra de tareas", en Gnome se llama "Área de notificación", en KDE se llama "Bandeja del sistema (Bandeja)". La bandeja del sistema es compartida por todas las aplicaciones que se ejecutan en el escritorio.
Se agregaron dos nuevas clases en jdk1.6 para implementar:
SystemTray y TrayIcon, la siguiente es una introducción detallada:
Bandeja del sistema
Introducción a la clase:
En algunas plataformas, es posible que la bandeja del sistema no exista o no sea compatible, por lo tanto, primero use SystemTray.isSupported() para verificar si el sistema actual es compatible con la bandeja del sistema.
SystemTray puede contener uno o más TrayIcon, que se pueden agregar a la bandeja usando el método add(java.awt.TrayIcon). Cuando la bandeja ya no sea necesaria, use remove(java.awt.TrayIcon).
Retírelo.
TrayIcon consta de una imagen, un menú emergente y un conjunto de oyentes relacionados. Cada aplicación Java tiene una instancia de SystemTray, que permite a la aplicación establecer una conexión con la bandeja del sistema del escritorio mientras se ejecuta.
Las instancias de SystemTray se pueden obtener mediante el método getSystemTray (). La aplicación no puede crear su propia SystemTray
Copie el código de código de la siguiente manera:
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.awt.event.MouseAdapter;
importar java.awt.event.MouseEvent;
importar java.awt.event.WindowEvent;
importar java.awt.event.WindowStateListener;
importar javax.swing.ImageIcon;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JLabel;
importar javax.swing.JOptionPane;
importar javax.swing.JPanel;
importar javax.swing.Timer;
importar javax.swing.UIManager;
/**
*
* @autor Sr.LiuTao
*/
la clase pública TrayByJdk extiende JFrame implementa ActionListener{
panel JPanel privado = nulo;
botón JButton privado = null // Botón para iniciar el icono de la bandeja
private JLabel label = null // Se utiliza para mostrar información sobre si el sistema admite bandejas.
TrayIcon privado trayIcon = nulo // icono de bandeja
Temporizador privado shanshuo = null;
icono de imagen privado icon1 = nulo;
icono de imagen privado icon2 = nulo;
private SystemTray tray = null // Instancia de esta bandeja del sistema operativo
booleano gengai = falso;
//Utilizando la tecnología de bandeja jdk1.6 para lograr aplicaciones multiplataforma
Bandeja públicaByJdk() {
//super("Demostración de tecnología de paletas");
icon1 = new ImageIcon("G://javaworks//eclipsework//shanzhaiQQClient//images//16.gif"); // El icono que se mostrará en la bandeja
icon2 = new ImageIcon("G://javaworks//eclipsework//shanzhaiQQClient//images//15.gif"); // El icono que se mostrará en la bandeja
intentar {
// Establece LookAndFeel al estilo de Windows
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} captura (Excepción ex) {
ex.printStackTrace();
}
panel = nuevo JPanel();
botón = nuevo JButton("Reducir a bandeja");
botón.setEnabled(falso);
etiqueta = new JLabel("Este sistema operativo no es compatible con la bandeja");
panel.add(etiqueta);
panel.add(botón);
//Determinar si la bandeja es compatible
si (SystemTray.isSupported()) {
esta.bandeja();
}
shanshuo = nuevo temporizador (1000, esto);
shanshuo.start();
this.getContentPane().add(pane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.addWindowStateListener(nuevo WindowStateListener () {
estado de ventana vacío público cambiado (estado de evento de ventana) {
if(estado.getNewState() == 1 || estado.getNewState() == 7) {
yinca();
}
}
});
this.setVisible (falso);
System.out.println("=============="+this.isVisible());
}
/**
* Códigos relacionados con pallets
*/
bandeja vacía privada() {
label.setText("Este sistema operativo admite bandeja");
botón.setEnabled(verdadero);
tray = SystemTray.getSystemTray(); // Obtener la instancia de bandeja de este sistema operativo
//ImageIcon icon = new ImageIcon("tray.gif"); //El icono que se mostrará en la bandeja
PopupMenu pop = new PopupMenu(); // Construye un menú emergente al hacer clic derecho.
MenuItem show = new MenuItem("Mostrar ventana");
MenuItem salir = new MenuItem("Salir de la presentación");
Autor de MenuItem = nuevo MenuItem("Autor");
/**
* TrayIcon tiene tres estructuras
* TrayIcon(Imagen imagen) se construye con "icono"
* TrayIcon (imagen de imagen, información sobre herramientas de cadena) se construye con "icono" y "información sobre herramientas"
* TrayIcon (imagen de imagen, información sobre herramientas de cadena, ventana emergente PopupMenu) utiliza "icono", "información sobre herramientas" y "menú emergente" para construir un icono de bandeja
*/
trayIcon = new TrayIcon(icon1.getImage(), "Demostración de tecnología de bandeja", pop);
// Después de hacer clic en este botón, la ventana se cierra y el icono de la bandeja se agrega a la bandeja del sistema.
botón.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
intentar {
tray.add(trayIcon); // Agrega el icono de la bandeja a la instancia de la bandeja del sistema
setVisible(false); //Hacer la ventana invisible
} captura (AWTException ex) {
ex.printStackTrace();
}
}
});
/**
* Agregue un detector de mouse, cuando el mouse haga doble clic en el ícono de la bandeja, la ventana se mostrará de forma predeterminada
*/
trayIcon.addMouseListener(nuevo MouseAdapter() {
mouseClicked vacío público (MouseEvent e) {
if (e.getClickCount() == 2) { // Doble clic con el mouse
tray.remove(trayIcon); // Elimina el icono de la bandeja de la instancia de la bandeja del sistema.
setVisible(verdadero); // Mostrar ventana
}
}
});
show.addActionListener(new ActionListener() { // Haga clic en el menú "Mostrar ventana" para mostrar la ventana
acción vacía pública realizada (ActionEvent e) {
tray.remove(trayIcon); // Elimina el icono de la bandeja de la instancia de la bandeja del sistema.
setVisible(verdadero); // Mostrar ventana
}
});
exit.addActionListener(new ActionListener() { // Haga clic en el menú "Salir de demostración" para salir del programa
acción vacía pública realizada (ActionEvent e) {
System.exit(0); //Salir del programa
}
});
Author.addActionListener(new ActionListener() { // Haga clic en el menú "Salir de demostración" para salir del programa
acción vacía pública realizada (ActionEvent e) {
mostrarMensaje();
}
});
pop.add(mostrar);
pop.add(salir);
pop.add(autor);
}
/**
* Mostrar información
*/
showMessage vacío privado() {
JOptionPane.showMessageDialog(this, new JLabel("Esta es una bandeja del sistema"), "Mensaje", JOptionPane.INFORMATION_MESSAGE);
}
público estático vacío principal (String [] argumentos) {
nuevo TrayByJdk().yinca();
}
vacío público yinca(){
intentar {
bandeja.add(bandejaIcon);
} captura (AWTException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
} // Agrega el ícono de la bandeja a la instancia de la bandeja del sistema
setVisible(false); //Hacer la ventana invisible
}
@Anular
acción vacía pública realizada (ActionEvent arg0) {
si(!gengai){
bandejaIcon.setImage(icon2.getImage());
gengai = verdadero;
}demás{
trayIcon.setImage(icon1.getImage());
gengai = falso;
}
}
}