Hallo,
der folgende Code stammt aus dem Buch "Java als erste Programmiersprache" (Seite 873/874).
Bis auf die Zeilen 56 - 58 bereitet mir der Code keine Probleme. An dieser Stelle verstehe ich nicht, was
bringen soll, denn damit wird ja nur der Eventhandler aufgerufen, für den Fall, dass man im laufenden Programm auf "Bild wechseln" klickt, genau das wurde aber ja bereits in Zeile 35 abgehandelt ???:L
Lösche ich die Zeile
funktioniert das Programm genauso, wie wenn die Zeile vorhanden ist (natürlich habe ich das erneute Kompilieren nicht vergessen ;-) ).
Hoffe jemand hat eine Erklärung dafür, was die besagte Zeile bringen soll.
Vielen Dank für die Mühe!
Gruß
Wang
der folgende Code stammt aus dem Buch "Java als erste Programmiersprache" (Seite 873/874).
Bis auf die Zeilen 56 - 58 bereitet mir der Code keine Probleme. An dieser Stelle verstehe ich nicht, was
Code:
ti.addActionListener (this);
Lösche ich die Zeile
Code:
ti.addActionListener (this);
Hoffe jemand hat eine Erklärung dafür, was die besagte Zeile bringen soll.
Vielen Dank für die Mühe!
Gruß
Wang
Java:
// Datei: SystemTrayBeispiel.java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class SystemTrayBeispiel implements ActionListener
{
// TrayIcon
private TrayIcon ti = null;
// Bild Speicher
private LinkedList<Image> imageQueue;
public SystemTrayBeispiel() throws Exception
{
// Abfrage ob SystemTray von der Plattform unterstützt wird.
if (SystemTray.isSupported())
{
// Bildspeicher erstellen
imageQueue = new LinkedList<Image>();
// Bilder unter Verwendung des AWT Toolkit laden
// und im Bildspeicher ablegen
Image image = Toolkit.getDefaultToolkit()
.getImage ("iconnormal.png");
imageQueue.add (image);
image = Toolkit.getDefaultToolkit()
.getImage ("iconextra.png");
imageQueue.add (image);
// Popup Menu erstellen
PopupMenu menu = new PopupMenu();
// MenuItem Bild wechseln
MenuItem miChangeImage = new MenuItem ("Bild wechseln");
miChangeImage.addActionListener (this);
// MenuItem zum Popup Menu hinzufügen
menu.add (miChangeImage);
// MenuItem Anwendung beenden
MenuItem miClose = new MenuItem ("Beenden");
miClose.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
// Anwendung "hart" beenden
System.exit (0);
}
});
// MenuItem zum Popup Menu hinzufügen
menu.add (miClose);
// TrayIcon mit Bild und Tooltip erstellen
ti = new TrayIcon (imageQueue.poll(),
"TrayIcon Tooltip", menu);
// Angezeigtes Bild automatisch skalieren
ti.setImageAutoSize (true);
// ActionListener mit einer Standardaktion beim
// TrayIcon registrieren
ti.addActionListener (this);
// SystemTray Singleton holen
SystemTray tray = SystemTray.getSystemTray();
// TrayIcon zum SystemTray hinzufügen
tray.add (ti);
}
else
// Plattform ohne SystemTray
throw new Exception("Kein SystemTray verfuegbar!");
}
public void actionPerformed (ActionEvent e)
{
try
{
// bisher angezeigtes Bild in den Bildspeicher legen
imageQueue.add (ti.getImage());
// neu anzuzeigendes Bild aus dem Bildspeichern holen
ti.setImage (imageQueue.poll());
}
catch (Exception ex)
{
}
}
public static void main (String[] args)
{
try
{
// SystemTray Beisiel starten
SystemTrayBeispiel st = new SystemTrayBeispiel();
}
catch (Exception ex)
{
System.out.println (ex);
}
}
}