en Javabarre des tâches(barre d'état système) icôneAffichage/clignotement
en Javabarre des tâches(barre d'état système) l'icône s'affiche et clignote.
Les classes utilitaires sont de nouvelles fonctionnalités ajoutées à Java SE 6 Mustang. java.awt.SystemTray ,,java.awt.TrayIcon Utilisez des cours. Nous présenterons également un exemple d’application afin que vous puissiez comprendre comment l’utiliser.
Fonction de la barre d'état système (barre des tâches)
La barre d'état système (barre des tâches) est une rangée de petites icônes situées en bas à droite de l'écran de votre ordinateur. Dans Java SE 6, les classes suivantes ont été ajoutées pour utiliser la fonctionnalité de la barre d'état système.
- java.awt.SystemTray
La classe SystemTray représente la barre d'état système du bureau. - java.awt.TrayIcon
L'objet TrayIcon représente une icône de la barre d'état système qui peut être ajoutée à la barre d'état système.
Comment créer une icône clignotante
Vous souhaiterez peut-être utiliser le site suivant pour créer une icône clignotante.
Créez une icône clignotante en téléchargeant une icône locale.
https://www.bannerkoubou.com/anime/
exemple d'application
L'exemple d'application utilise la classe d'utilitaires de la barre d'état système TaskTrayUtil pour implémenter les fonctions suivantes.
- Quand a commencébarre des tâchesàicôneMontrer.
- Cliquez sur le [bouton clignotant] pourbarre des tâchesL'icône clignotera.
Le ballon affiche également le message "Sortez-moi d'ici !!" - Cliquez sur le [bouton Annuler] pour annuler le clignotement de l'icône.
- barre des tâchesFaites un simple clic gauche sur l'icône pour faire apparaître la fenêtre principale sur le bureau.
- barre des tâchesCliquez avec le bouton droit sur l'icône pour afficher le menu PopupMenu par défaut.
- Lorsque la fenêtre principale est réduitebarre des tâchesStocké dans.
Obtenir le code source
Le code source peut être obtenu ci-dessous. De plus, lors de la compilation, veuillez enregistrer l'icône suivante au même emplacement que le code source.
importer javax.swing.ImageIcon ;
importer javax.swing.JButton ;
importer javax.swing.JFrame ;
importer javax.swing.JPanel ;
importer javax.swing.SwingUtilities ;
importer javax.swing.UIManager ;
/**
* Afficher/clignoter l'icône de la barre des tâches (barre d'état système) en Java.
*
* ◆ Aperçu de cette classe
* La classe TaskTray est un utilitaire qui gère la barre des tâches.
* Fournit les fonctionnalités suivantes:
* ・Affichez l'icône dans la barre des tâches.
* - Afficher un message contextuel dans la barre des tâches.
* - Faites clignoter la barre des tâches.
*
* ◆ Comment utiliser
* Passez la classe JFrame cible à l'argument de méthode ci-dessous.
* ・createTray(JFrame targetFrame)
* ・createTray (JFrame final targetFrame, Image image, menu PopupMenu)
*
*/
classe publique TaskTrayUtil {
cadre JFrame statique privé ;
PopupMenu statique privé defaultMenu ;
TrayIcon statique privé trayIcon ;
bac SystemTray statique privé = SystemTray.getSystemTray();
Objet statique privé INSTANCE_LOCK = new Object();
/**
* Exemple d'exécution
* @param arguments
*/
public static void main (String[] arguments) {
essayer {
// Définit LookAndFeel sur Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// icône régulière
Image finale img = nouvelle ImageIcon (
TaskTrayUtil.class.getResource(
"tray_icon.gif")).getImage();
cadre JFrame final =
new JFrame ("Afficher/clignoter l'icône dans la barre des tâches");
frame.setSize(300, 100);
frame.setIconImage(img);
// Stocker dans la barre des tâches lorsque la fenêtre est réduite
// Ajoutez la classe WindowListener comme indiqué.
frame.addWindowListener(nouveau WindowAdapter() {
public void windowIconified (WindowEvent e) {
frame.setVisible(false);
}
});
JPanel jPanel = new JPanel();
jPanel.setLayout(nouveau FlowLayout());
jPanel.setSize(nouvelle Dimension(219, 70));
// icône clignotante
Image finale imgLight =
nouvelle ImageIcon (TaskTrayUtil.class.getResource(
"tray_icon_light.gif")).getImage();
JButton lightButton = new JButton("clignoter");
lightButton.addActionListener(nouveau ActionListener(){
public void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, nul);
displayMessage("Message", "Sortez-moi d'ici !!");
}
});
JButton CancelButton = new JButton("annuler");
CancelButton.addActionListener(nouveau ActionListener(){
public void actionPerformed(ActionEvent e) {
replaceImageWithDelete(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(cancelButton, null);
frame.add(jPanel);
// Fin du traitement.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Affiche le cadre au centre de l'écran.
frame.setLocationRelativeTo(null);
// Créer une barre de tâches.
TaskTrayUtil.createTray(frame);
frame.setVisible(true);
} attraper (Exception e) {
e.printStackTrace();
}
}
/**
*
*/
statique {
createPopupMenu();
}
/**
* Génère un menu PopupMenu par défaut à afficher dans la barre des tâches.
*Les menus suivants sont disponibles.
* ・ "Supprimer de la barre des tâches"
* Déplacez l'application cible de la barre des tâches vers le bureau
* Sors-le.
* (Activez la fenêtre et amenez-la vers l'avant.)
* - Terminez l'application à mettre fin.
*/
vide statique privé createPopupMenu() {
MenuItem getTrayItem = new MenuItem ("Supprimer de la barre des tâches");
getTrayItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actif();
}
});
MenuItem exitItem = new MenuItem("Quitter");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
supprimerTrayIcon();
TaskTrayUtil.frame.setVisible(false);
TaskTrayUtil.frame.dispose();
Système.exit(0);
}
});
defaultMenu = nouveau PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* Créez une icône dans la barre d'état système et ajoutez-la à la barre d'état système.
* Définir un écouteur pour les événements qui se produisent sur l'icône sur targetFrame
Mis à *.
* L'événement ici se produit lorsque l'icône de la barre d'état est double-cliquée.
* Extrayez l'application cible.
* @param targetFrame Application cible
*/
public static void createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* Créez une icône dans la barre d'état système et ajoutez-la à la barre d'état système.
*
* @param targetFrame Application cible
* @param image Image image à afficher sur l'icône de la barre d'état.
* Si nul, il peut être obtenu depuis targetFrame avec getIconImage()
* Utilisez des images d'images.
* Menu @param PopupMenu à afficher dans la barre des tâches.
* Si nul, affiche le PopupMenu par défaut.
*/
public static void createTray (JFrame final targetFrame, Image image,
Menu contextuel) {
// Quitte si la barre d'état système n'est pas prise en charge.
si (!SystemTray.isSupported()) {
retour;
}
TaskTrayUtil.frame = targetFrame;
si (image == null) {
image = targetFrame.getIconImage();
}
si (menu == nul) {
menu = menu par défaut ;
}
trayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(nouveau MouseAdapter(){
public void mouseClicked (MouseEvent e) {
si (SwingUtilities.isLeftMouseButton(e)) {
actif();
}
}
});
essayer {
tray.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Supprimer l'icône de la barre des tâches.
* Doit être appelé à la fermeture de l'application.
*/
public static void removeTrayIcon() {
tray.remove(trayIcon);
}
/**
* Faites clignoter l'icône de la barre des tâches.
* @param msg si nécessaire lorsque l'on clique sur l'icône clignotante
* Définissez le message à afficher.
*/
public static void onAndOffLight (Image lightImg, String msg) {
remplacerImage(lightImg);
ChangeLightImgAdapter adapt =
nouveau TaskTrayUtil().new ChangeLightImgAdapter(msg);
trayIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Modifiez l'icône de la barre des tâches.
* @param image Change uniquement si elle diffère de l'icône actuelle.
*/
public static void replaceImage (Image image) {
synchronisé (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
trayIcon.setImage(image);
}
}
}
/**
* Modifiez l'icône de la barre des tâches.
* *Si vous souhaitez restaurer l'icône qui clignote pour une raison quelconque,
* Cela semble inutile à moins que vous ne le supprimiez avec {@link SystemTray#remove(TrayIcon)}).
* @param image Change uniquement si elle diffère de l'icône actuelle.
*/
public static void replaceImageWithDelete (Image image) {
synchronisé (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
tray.remove(trayIcon);
trayIcon.setImage(image);
essayer {
tray.add(trayIcon);
} attraper (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* Afficher un message contextuel dans la barre des tâches.
* Légende @param
* Texte @param
*/
public static void displayMessage (légende de chaîne, texte de chaîne) {
if (légende != null || texte != null) {
trayIcon.displayMessage(légende, texte,
TrayIcon.MessageType.INFO);
}
}
/**
* Déplacez l'application cible de la barre des tâches vers le bureau
* Sors-le.
*/
privé statique vide actif() {
// Ramène l'état du frame à la normale.
TaskTrayUtil.frame.setExtendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(false);
}
/**
* Événement à générer lorsque l'on clique sur l'icône clignotante
* Cours d'écoute.
*/
la classe ChangeLightImgAdapter implémente WindowListener, MouseListener {
Chaîne lightImageText ;
public ChangeLightImgAdapter (String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Lorsque l'on clique sur l'icône de la barre des tâches
* Afficher un message contextuel.
*/
public void mousePressed (MouseEvent e) {
TaskTrayUtil.displayMessage(null, lightImageText);
}
/**
* Clignotait lorsque l'application cible devenait active
* Icône de retour.
*/
public void windowActivated (WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(this);
TaskTrayUtil.trayIcon.removeMouseListener(this);
}
public void windowClosed (WindowEvent e) {}
public void windowClosing (WindowEvent e) {}
public void windowDeactivated (WindowEvent e) {}
public void windowDeiconified (WindowEvent e) {}
public void windowIconified (WindowEvent e) {}
public void windowOpened (WindowEvent e) {}
public void mouseClicked (MouseEvent e) {}
public void mouseEntered (MouseEvent e) {}
public void mouseExited (MouseEvent e) {}
public void mouseReleased (MouseEvent e) {}
}
}