Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
5.1 ActionEvent und ActionListener<br />
public class UserFrame extends Frame implements ActionListener<br />
Das Schlüsselwort implements besagt, dass die Klasse UserFrame das Interface<br />
ActionListener implementiert. Dies hat zur Folge, dass sie eine Implementation für<br />
dessen abstrakte Methode<br />
public abstract void actionPerformed(ActionEvent e)<br />
liefern muss.<br />
Da die im UserFrame deklarierte Methode actionPerforemed() die gleichnamige<br />
abstrakte Methode des Interface ActionListener implementiert, ist sie nicht mehr<br />
abstrakt. Das Schlüsselwort abstract in der Methodenschnittstelle entfällt.<br />
public void actionPerformed(ActionEvent event) {<br />
String command = event.getActionCommand();<br />
if (command.equals("START")) start();<br />
else if (command.equals("NEW GAME")) newGame();<br />
else if (command.equals("YOUR TURN")) myTurn();<br />
else if (command.equals("TAKE ONE")) userTakes(1);<br />
else if (command.equals("TAKE TWO")) userTakes(2);<br />
else if (command.equals("TAKE THREE")) userTakes(3);<br />
}<br />
Die Methode actionPerformed() erhält den durch den Button generierten<br />
ActionEvent als Parameter. Dieser wird innerhalb der Methode mit event bezeichnet.<br />
In der Anweisung<br />
String command = event.getActionCommand();<br />
liefert die Botschaft getActionCommand() die Beschriftung desjenigen Buttons<br />
zurück, der das Ereignis ausgelöst hat. Dieser String wird dann der lokalen Variablen<br />
command zugewiesen. Die Methode getActionCommand() ist in der Klasse<br />
ActionEvent deklariert.<br />
Nun wird in der Anweisungssequenz<br />
if (command.equals("START")) start();<br />
else if (command.equals("NEW GAME")) newGame();<br />
else if (command.equals("YOUR TURN")) myTurn();<br />
else if (command.equals("TAKE ONE")) userTakes(1);<br />
else if (command.equals("TAKE TWO")) userTakes(2);<br />
else if (command.equals("TAKE THREE")) userTakes(3);<br />
in Abhängigkeit vom ereignisgenerierenden Button der Programmverlauf bestimmt: von<br />
Fall zu Fall wird eine andere Methode aufgerufen, wodurch der in Abbildung 5-7<br />
ersichtliche Zustandswechsel erfolgt.<br />
Damit nun der ActionListener UserFrame die Ereignisobjekte der Buttons turn,<br />
take1, take2 und take3 „hört“, muss er bei ihnen registriert werden. Dies geschieht<br />
ebenfalls in der Klasse UserFrame:<br />
140