Programmazione:Java/JAVA 6 SystemTray e TrayIcon

Da WikiSitech.
Vai alla navigazioneVai alla ricerca

<< Back to Java

JAVA 6 SystemTray e TrayIcon

Usiamo le classi SystemTray e TrayIcon, introdotte dal JAVA 6, per aggiungere alla task bar di Win una applicazione. L'applicazione aggiunge una TrayIcon nel SystemTray con un MenuItem nel suo PopupMenu.

Per la documentazione ufficiale sun:

Con click destro (in win) si apre la finestra del Menu con le opzioni

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class FullTray {

 static class ShowMessageListener implements ActionListener {
   TrayIcon trayIcon;
   String title;
   String message;
   TrayIcon.MessageType messageType;
   ShowMessageListener(
       TrayIcon trayIcon,
       String title,
       String message,
       TrayIcon.MessageType messageType) {
     this.trayIcon = trayIcon;
     this.title = title;
     this.message = message;
     this.messageType = messageType;
   }
   public void actionPerformed(ActionEvent e) {
     trayIcon.displayMessage(title, message, messageType);
   }
 }


 public static void main(String args[]) {
   Runnable runner = new Runnable() {
     public void run() {
   	  
   	  //controlliamo che il Sistema supporti il system tray
   	  if (SystemTray.isSupported()) {
         final SystemTray tray = SystemTray.getSystemTray();
         
         Image immagine = Toolkit.getDefaultToolkit().getImage("C:Documents and Settings\\pe1748\\immagine.gif");
         
         //usiamo la classe PopupMenu che estende Menu
         PopupMenu popup = new PopupMenu();
         
         //Ci creiamo la TrayIcon
         final TrayIcon trayIcon = new TrayIcon(immagine, "Giacomo", popup);
         MenuItem item = new MenuItem("Error");
         
         item.addActionListener(new ShowMessageListener(trayIcon,
           "Error Title", "Error Testo", TrayIcon.MessageType.ERROR));
         popup.add(item);
         
         item = new MenuItem("Warning");
         item.addActionListener(new ShowMessageListener(trayIcon,
           "Warning Title", "Warning testo", TrayIcon.MessageType.WARNING));
         popup.add(item);
         
         item = new MenuItem("Info");
         item.addActionListener(new ShowMessageListener(trayIcon,
           "Info Title", "Info testo", TrayIcon.MessageType.INFO));
         popup.add(item);
         
         item = new MenuItem("Info2");
         item.addActionListener(new ShowMessageListener(trayIcon,
           "Info Title", "Info testo", TrayIcon.MessageType.INFO));
         popup.add(item);
         
         item = new MenuItem("Boh?!");
         item.addActionListener(new ShowMessageListener(trayIcon,
           "None Title", "None", TrayIcon.MessageType.NONE));
         popup.add(item);
         
         //Usiamo il metodo remove() di SystemTray per rimuovere la TrayIcon
         item = new MenuItem("Chiudi");
         item.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {

tray.remove(trayIcon);

           }

}

         );
         popup.add(item);
         try {
           tray.add(trayIcon);
         } catch (AWTException e) {
           System.err.println("Can't add to tray");
         }
       } else {
         System.err.println("Il Systema non suopporta il SystemTray");
       }
     }
   };
   EventQueue.invokeLater(runner);
 }

}