La classe SystemTray rappresenta la barra delle applicazioni della nostra scrivania. Su alcuni sistemi operativi, o più genericamente dovremmo parlare di desktop environment, la System Tray potrebbe non esistere o non essere supportata in questo caso quando cercheremo di ottenere l’istanza dell SystemTray con il metodo getSystemTray() verrà sollevata l’eccezione UnsupportedOperationException. Per testare se la barra è supportata basterà utilizzare il metodo isSupported().
La SystemTray può contenere più icone TrayIcon, aggiunt con il metodo add(java.awt.TrayIcon), e eliminate quando non più utili con remove(java.awt.TrayIcon). La classe TrayIcon consiste in un’immagine, un menù a popup e un insieme di listeners ad esso associati.
Vediamo un semplice esempio di utilizzo:
/**
*
* @author Carmelo Saffioti
*/
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class SysTrayDemo {
public static void main(String[] args) throws Exception {
if (!SystemTray.isSupported()) {
System.out.println("La SystemTray non è supportata");
return;
}
SystemTray tray = SystemTray.getSystemTray();
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("trayIcon.jpg");
PopupMenu menu = new PopupMenu();
MenuItem messageItem = new MenuItem("Mostra messaggio");
messageItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "www.carmelosaffioti.it");
}
});
menu.add(messageItem);
MenuItem closeItem = new MenuItem("Chiudi");
closeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(closeItem);
TrayIcon icon = new TrayIcon(image, "SystemTray app", menu);
icon.setImageAutoSize(true);
try {
tray.add(icon);
} catch (AWTException e) {
System.out.println("La TrayIcon non può essere aggiunta");
}
}
}
Vediamo un semplice esempio di utilizzo:
/**
*
* @author Carmelo Saffioti
*/
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class SysTrayDemo {
public static void main(String[] args) throws Exception {
if (!SystemTray.isSupported()) {
System.out.println("La SystemTray non è supportata");
return;
}
SystemTray tray = SystemTray.getSystemTray();
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("trayIcon.jpg");
PopupMenu menu = new PopupMenu();
MenuItem messageItem = new MenuItem("Mostra messaggio");
messageItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "www.carmelosaffioti.it");
}
});
menu.add(messageItem);
MenuItem closeItem = new MenuItem("Chiudi");
closeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(closeItem);
TrayIcon icon = new TrayIcon(image, "SystemTray app", menu);
icon.setImageAutoSize(true);
try {
tray.add(icon);
} catch (AWTException e) {
System.out.println("La TrayIcon non può essere aggiunta");
}
}
}
Nessun commento:
Posta un commento