|
Ein Action-Event wird generiert, wenn der Anwender einen Menüpunkt selektiert und ausgewählt hat. Das Programm kann den auslösenden Menüeintrag bestimmen und so geeignet darauf reagieren. Action-Events werden von der Klasse MenuItem und drei weiteren Klassen (auf die wir in den folgenden Kapiteln zurückkommen) gesendet:
Ein Empfänger für Action-Events muß das Interface ActionListener implementieren und bekommt Events des Typs ActionEvent übergeben. ActionEvent erweitert die Klasse AWTEvent und stellt neben getID und getSource vor allem die Methode getActionCommand zur Verfügung, mit der die verschiedenen Ereignisquellen unterschieden werden können:
public String getActionCommand() |
java.awt.event.ActionEvent |
Wird das Action-Event durch ein MenuItem ausgelöst, liefert dessen Methode getActionCommand die Bezeichnung des Menüpunktes, wie sie an den Konstruktor übergeben wurde. Durch einen expliziten Aufruf von setActionCommand kann dieser String auch unabhängig von der Beschriftung des Menüpunkts geändert werden. Ein Aufruf von getActionCommand liefert den aktuellen Inhalt des Menüpunkts bzw. seine Beschriftung, falls setActionCommand noch nicht aufgerufen wurde: |
![]() |
|
![]() |
public void setActionCommand(String command) public String getActionCommand() |
java.awt.MenuItem |
Die Registrierung der Empfängerklasse erfolgt mit der Methode addActionListener, die in den Klassen MenuItem, Button, List und TextField zur Verfügung steht:
public void addActionListener(ActionListener l) |
java.awt.Button |
Das Interface ActionListener stellt lediglich die Methode actionPerformed zur Verfügung, die beim Aufruf ein ActionEvent übergeben bekommt:
public abstract void actionPerformed(ActionEvent e) |
java.awt.event.ActionListener |
Üblicherweise wird in actionPerformed zunächst durch Aufruf von getActionCommand und/oder getSource die Quelle des Action-Events ermittelt, bevor der Code folgt, der die Reaktion auf das Ereignis implementiert. |
![]() |
|
![]() |
Das folgende Programm zeigt die Reaktion auf Action-Events. Das Programm öffnet ein Fenster, das mit Hilfe von Menüeinträgen auf dem Bildschirm verschoben oder in der Größe verändert werden kann:
|
![]() |
|
![]() |
Das Programm besitzt eine Klasse MainMenu4, in der das Menü definiert wird. Um die Definition der Menüeinträge zu vereinfachen, wurde die Methode addNewMenuItem implementiert, die einen neuen Menüeintrag erzeugt, ggfs. mit einem Beschleuniger versieht, den ActionListener registriert und schließlich an das übergebene Menü anhängt. Der erste Parameter von addnewMenuItem ist das Menü, für das ein Menüeintrag erstellt werden soll. Der zweite Parameter ist die Bezeichnung des Menüeintrags. Ist darin ein »&« enthalten, so wird dieses als Präfix für die Beschleunigertaste angesehen und der nachfolgende Buchstabe als Beschleuniger registriert. Anschließend wird das »&« entfernt. Als drittes Argument wird der ActionListener übergeben, der beim Menüeintrag registriert werden soll.
Wir verwenden in diesem Beispiel lediglich einen einzigen ActionListener, der bei allen Menüeinträgen registriert wird. Über den this-Zeiger wird das Fenster an den Konstruktor von MainMenu4 übergeben und von dort an addNewMenuItem weitergegeben. Voraussetzung dafür ist, daß das Fenster das Interface ActionListener implementiert und die Methode actionPerformed zur Verfügung stellt. |
![]() |
|
![]() |
Die Unterscheidung der verschiedenen Ereignisquellen wird innerhalb von actionPerformed durch Aufruf von getActionCommand erledigt. Deren Rückgabewert wird abgefragt, um das passende Kommando auszuführen. Die Größenänderung erfolgt durch Aufruf von getSize und setSize, die Positionierung mit getLocation und setLocation. Zur Kontrolle zeichnet das Programm in paint zwei rote Diagonalen über die volle Länge der Client-Area:
Abbildung 20.3: Ein Programm, das auf Action-Events reagiert
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |