Programmazione:Java/JAVA 6 SystemTray e TrayIcon
Da WikiSitech.
Versione del 7 dic 2007 alle 10:42 di Rimondini (discussione | contributi)
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);
 }
}