en Javabandeja de tareas(bandeja del sistema) iconoMostrar/parpadear
en Javabandeja de tareas(bandeja del sistema) se muestra y parpadea.
Las clases de utilidad son nuevas características agregadas en Java SE 6 Mustang. java.awt.SystemTray ,,java.awt.TrayIcon Utilice clases. También presentaremos una aplicación de muestra para que pueda comprender cómo usarla.
Función de bandeja del sistema (bandeja de tareas)
La bandeja del sistema (bandeja de tareas) es una fila de pequeños íconos ubicados en la parte inferior derecha de la pantalla de su computadora. En Java SE 6, se agregaron las siguientes clases para utilizar la funcionalidad de la bandeja del sistema.
- java.awt.SystemTray
La clase SystemTray representa la bandeja del sistema del escritorio. - java.awt.TrayIcon
El objeto TrayIcon representa un icono de bandeja que se puede agregar a la bandeja del sistema.
Cómo crear un icono parpadeante
Es posible que desee utilizar el siguiente sitio para crear un icono parpadeante.
Cree un ícono parpadeante cargando un ícono local.
https://www.bannerkoubou.com/anime/
aplicación de muestra
La aplicación de ejemplo utiliza la clase de utilidad de bandeja del sistema TaskTrayUtil para implementar las siguientes funciones.
- Cuando empezóbandeja de tareasaiconoEspectáculo.
- Haga clic en el [botón parpadeante] parabandeja de tareasEl icono parpadeará.
El globo también muestra el mensaje "¡Sácame de aquí!" - Haga clic en el [botón Cancelar] para cancelar el parpadeo del icono.
- bandeja de tareasHaga clic con el botón izquierdo en el icono para abrir la ventana principal en el escritorio.
- bandeja de tareasHaga clic derecho en el icono para mostrar el menú PopupMenu predeterminado.
- Cuando la ventana principal está minimizadabandeja de tareasGuardado en.
Obtener código fuente
El código fuente se puede obtener a continuación. Además, al compilar, guarde el siguiente icono en la misma ubicación que el código fuente.
importar javax.swing.ImageIcon;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JPanel;
importar javax.swing.SwingUtilities;
importar javax.swing.UIManager;
/**
* Muestra/hace parpadear el icono de la bandeja de tareas (bandeja del sistema) en Java.
*
* ◆ Descripción general de esta clase
* La clase TaskTray es una utilidad que maneja la bandeja de tareas.
* Proporciona las siguientes características:
* ・Muestra el ícono en la bandeja de tareas.
*: muestra un mensaje emergente en la bandeja de tareas.
* - Haz que la bandeja de tareas parpadee.
*
* ◆ Cómo utilizar
* Pase la clase JFrame de destino al argumento del método siguiente.
* ・crearTray(JFrame targetFrame)
* ・crearTray(Marco de destino final de JFrame, Imagen de imagen, menú PopupMenu)
*
*/
clase pública TaskTrayUtil {
marco JFrame estático privado;
Menú emergente estático privado defaultMenu;
TrayIcon estático privado trayIcon;
bandeja SystemTray estática privada = SystemTray.getSystemTray();
Objeto estático privado INSTANCE_LOCK = nuevo Objeto();
/**
* Muestra de ejecución
* argumentos @param
*/
público estático vacío principal (String [] argumentos) {
intentar {
// Establecer LookAndFeel en Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// icono normal
Imagen final img = nuevo ImageIcon(
TaskTrayUtil.class.getResource(
“bandeja_icon.gif”)).getImage();
cuadro final JFrame =
nuevo JFrame ("Mostrar/icono parpadear en la bandeja de tareas");
marco.setSize(300, 100);
marco.setIconImage(img);
// Almacenar en la bandeja de tareas cuando la ventana está minimizada
// Agregue la clase WindowListener como se muestra.
frame.addWindowListener (nuevo WindowAdapter() {
ventana vacía públicaIconificada (WindowEvent e) {
marco.setVisible (falso);
}
});
JPanel jPanel = nuevo JPanel();
jPanel.setLayout(nuevo FlowLayout());
jPanel.setSize(nueva Dimensión(219, 70));
// icono parpadeante
Imagen final imgLight =
nuevo ImageIcon(TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
JButton lightButton = nuevo JButton(“parpadear”);
lightButton.addActionListener(nuevo ActionListener(){
acción vacía pública realizada (ActionEvent e) {
onAndOffLight(imgLight, nulo);
displayMessage(“Mensaje”, “¡Sácame de aquí!”);
}
});
JButton cancelarButton = nuevo JButton(“cancelar”);
cancelarButton.addActionListener(nuevo ActionListener(){
acción vacía pública realizada (ActionEvent e) {
reemplazarImagenConDelete(img);
}
});
jPanel.add(botónluz, nulo);
jPanel.add(botóncancelar, nulo);
marco.add(jPanel);
// Finalizar procesamiento.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Muestra el marco en el centro de la pantalla.
frame.setLocationRelativeTo(nulo);
// Crear bandeja de tareas.
TaskTrayUtil.createTray(marco);
frame.setVisible (verdadero);
} captura (Excepción e) {
e.printStackTrace();
}
}
/**
*
*/
estático {
crearMenúPopup();
}
/**
* Genera un menú PopupMenu predeterminado que se mostrará en la bandeja de tareas.
*Están disponibles los siguientes menús.
* ・"Eliminar de la bandeja de tareas"
* Mueva la aplicación de destino desde la bandeja de tareas al escritorio
* Llevarlo a cabo.
* (Activa la ventana y llévala al frente.)
* - Dar por terminada la solicitud a dar por terminada.
*/
vacío estático privado createPopupMenu() {
MenuItem getTrayItem = new MenuItem(“Eliminar de la bandeja de tareas”);
getTrayItem.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
activo();
}
});
MenuItem exitItem = new MenuItem(“Salir”);
exitItem.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
eliminarTrayIcon();
TaskTrayUtil.frame.setVisible (falso);
TaskTrayUtil.frame.dispose();
Sistema.salir(0);
}
});
defaultMenu = nuevo PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* Cree un icono de bandeja y agréguelo a la bandeja del sistema.
* Establecer un oyente para los eventos que ocurren en el icono de targetFrame
Ajustado a *.
* El evento aquí es cuando se hace doble clic en el icono de la bandeja.
* Extraer la aplicación de destino.
* @param targetFrame Aplicación de destino
*/
crearTray vacío estático público (JFrame targetFrame) {
crearTray(targetFrame, nulo, nulo);
}
/**
* Cree un icono de bandeja y agréguelo a la bandeja del sistema.
*
* @param targetFrame Aplicación de destino
* @param image Imagen para mostrar en el icono de la bandeja.
* Si es nulo, se puede obtener de targetFrame con getIconImage()
* Utilice imágenes de imagen.
* Menú @param PopupMenu para mostrar en la bandeja de tareas.
* Si es nulo, muestra el menú emergente predeterminado.
*/
public static void createTray(final JFrame targetFrame, Imagen imagen,
Menú emergente) {
// Salir si la bandeja del sistema no es compatible.
si (!SystemTray.isSupported()) {
devolver;
}
TaskTrayUtil.frame = targetFrame;
si (imagen == nulo) {
imagen = targetFrame.getIconImage();
}
si (menú == nulo) {
menú = menú predeterminado;
}
trayIcon = new TrayIcon(imagen, targetFrame.getTitle(), menú);
trayIcon.setImageAutoSize(verdadero);
trayIcon.addMouseListener(nuevo MouseAdapter(){
mouseClicked vacío público (MouseEvent e) {
si (SwingUtilities.isLeftMouseButton(e)) {
activo();
}
}
});
intentar {
bandeja.add(bandejaIcon);
} captura (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Eliminar icono de la bandeja de tareas.
* Debe llamarse cuando se cierra la aplicación.
*/
vacío estático público removeTrayIcon() {
bandeja.remove(bandejaIcon);
}
/**
* Haga que el icono de la bandeja de tareas parpadee.
* @param msg si es necesario cuando se hace clic en el icono parpadeante
* Establecer el mensaje a mostrar.
*/
vacío estático público onAndOffLight (Imagen lightImg, mensaje de cadena) {
reemplazarImagen(lightImg);
ChangeLightImgAdapter adapt =
nuevo TaskTrayUtil().nuevo ChangeLightImgAdapter(msg);
trayIcon.addMouseListener(adaptar);
frame.addWindowListener(adaptar);
}
/**
* Cambiar el icono de la bandeja de tareas.
* Imagen @param Cambiar solo si difiere del ícono actual.
*/
vacío estático público reemplazarImagen (Imagen imagen) {
sincronizado (INSTANCE_LOCK) {
si (!image.equals(bandejaIcon.getImage())) {
trayIcon.setImage(imagen);
}
}
}
/**
* Cambiar el icono de la bandeja de tareas.
* *Si deseas restaurar el ícono que parpadea por algún motivo,
* Parece inútil a menos que lo elimines con {@link SystemTray#remove(TrayIcon)}).
* Imagen @param Cambiar solo si difiere del ícono actual.
*/
vacío estático público reemplazarImageWithDelete (imagen de imagen) {
sincronizado (INSTANCE_LOCK) {
si (!image.equals(bandejaIcon.getImage())) {
bandeja.remove(bandejaIcon);
trayIcon.setImage(imagen);
intentar {
bandeja.add(bandejaIcon);
} captura (Excepción e) {
e.printStackTrace();
}
}
}
}
/**
* Mostrar un mensaje emergente en la bandeja de tareas.
* @param título
* texto @param
*/
displayMessage público estático vacío (título de cadena, texto de cadena) {
si (título! = nulo || texto! = nulo) {
trayIcon.displayMessage(título, texto,
TrayIcon.MessageType.INFO);
}
}
/**
* Mueva la aplicación de destino desde la bandeja de tareas al escritorio
* Llevarlo a cabo.
*/
vacío estático privado activo() {
// Devuelve el estado del marco a la normalidad.
TaskTrayUtil.frame.setExtendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(verdadero);
TaskTrayUtil.frame.setVisible (verdadero);
TaskTrayUtil.frame.setAlwaysOnTop(falso);
}
/**
* Evento que se generará cuando se haga clic en el icono parpadeante
* Clase de oyente.
*/
clase ChangeLightImgAdapter implementa WindowListener, MouseListener {
Cadena lightImageText;
público ChangeLightImgAdapter (String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Cuando se hace clic en el icono de la bandeja de tareas
* Mostrar mensaje emergente.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage (nulo, lightImageText);
}
/**
* Parpadeó cuando la aplicación de destino se activó
* Icono de retorno.
*/
ventana vacía pública activada (WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(este);
TaskTrayUtil.trayIcon.removeMouseListener(este);
}
ventana vacía pública cerrada (WindowEvent e) {}
ventana vacía públicaClosing(WindowEvent e) {}
ventana vacía públicaDeactivada (WindowEvent e) {}
ventana vacía públicaDeiconificada (WindowEvent e) {}
ventana vacía públicaIconificada (WindowEvent e) {}
ventana vacía pública abierta (WindowEvent e) {}
mouseClicked vacío público (MouseEvent e) {}
mouseEntered público vacío (MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
mouseReleased público vacío (MouseEvent e) {}
}
}