Manipulation d'une barre système avec java 6

Manipuler la barre système

Description

Suite au post d'une source sur le site :http://codes-sources.commentcamarche.net/source/36279-manipuler-la-barre-systeme, je me suis dit que quelques explications permettraient d'éclaircir les choses !

Explications

Une des nouvelles fonctionnalités très intéressantes de cette version de Java est l'intégration en standard de la gestion de la barre système. Auparavant, vous auriez utilisé une des librairies externes :SysTray (http://systray.sourceforge.net/) ou JTray (NDLR septembre 2013: ne semble plus accessible sur le web). Aujourd'hui, avec la disponibilité de cette fonctionnalité dans le JDK 6, Sun frappe un grand coup pour intégrer vos applications dans le système d'exploitation hôte.

La classe principale que vous utiliserez pour avoir accès à la barre système est java.awt.SytemTray.Il n'existe qu'une seule instance de SystemTray dans une application Java, et pour obtenir celle-ci vous devez utiliser la méthode statique SystemTray.getSystemTray().

Néanmoins, Java se voulant portable sur les différents systèmes d'exploitation du marché, il se peut que cette fonctionnalité ne soit pas disponible sur le système cible qui exécutera votre application. Par conséquent, il est judicieux de vérifier au préalable le support de la barre système à l'aide de la méthode statique SystemTray.isSupported().Si vous utilisez néanmoins cette fonctionnalité alors que celle-ci n'est pas disponible, vous risquez de devoir intercepter une exception java.lang.UnsupportedOperationException.

Une fois que vous avez récupéré votre instance du SystemTray, vous allez pouvoir ajouter des objets TrayIcon,qui représente tout simplement une icône dans la barre système. Vous pourrez ajouter/supprimer plusieurs de ces objets dans votre application. Néanmoins, l'ajout d'un objet TrayIcon à SystemTray doit gérer l'exception AWTException. Celle-ci ne sera lancée que si vous ne pouvez pas ajouter le TrayIcon, par exemple si votre bureau ne possède pas de barre système !

Le code suivant illustre cette nouvelle fonctionnalité :

final TrayIcontrayIcon;

if(SystemTray.isSupported()) {
    SystemTray tray =SystemTray.getSystemTray();
    Image image = Toolkit.getDefaultToolkit().getImage("duke.gif");
           
    PopupMenu popup = newPopupMenu();
   
    MenuItem defaultItem = new MenuItem("Quitter");
    defaultItem.addActionListener(new ActionListener() {
        public voidactionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });
    popup.add(defaultItem);
 
    trayIcon = newTrayIcon(image, "Java 6 Demo !", popup);
    ActionListener actionListener = new ActionListener() {
        public voidactionPerformed(ActionEvent e) {
            trayIcon.displayMessage("Java 6 newfeature !",
                "Le System Tray en action!",
                TrayIcon.MessageType.INFO);
        }
    };
    trayIcon.setImageAutoSize(true);
    trayIcon.addActionListener(actionListener);
   
    try {
        tray.add(trayIcon);
    } catch(AWTException e) {
        e.printStackTrace();
    }
} else {
...
}

Comme vous pouvez le constater dans l'exemple, un objet TrayIcon est beaucoup plus qu'une simple icône dans la barre système. Celle-ci peut se transformer en message popup et en menu AWT (la limite à ce type de menu est donc celui des menus AWT, ce qui se traduit par une liberté de choix dans la réalisation de menus complexes).

Un objet TrayIcon reçoit les évènements de la souris, celui-ci peut donc être associé avec des listeners tel que actionListener, mouseListener et mouseMotionListener. Cela devrait vous donner la possibilité de réaliser des menus très interactifs.Néanmoins, certains évènements sont directement consommés par l'objet, par exemple, le double clic avec le bouton droit de la souris affiche le menu associé lors de la construction de l'objet TrayIcon.

Une fois l'objet TrayIcon créé, vous aurez tout le loisir de changer ses propriétés pendant l'exécution de votre application. C'est le cas du menu popup, de l'image ou encore du message tooltip qui s'affiche lorsque vous passez la souris dessus.

Bon courage !

Ce document intitulé « Manipulation d'une barre système avec java 6 » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous