zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Buttonklick-Ereignisse werden an die actionPerformed() Methode übergeben, aber sie tut immer das Gleiche, egal welcher Button angeklickt wird.

Abbildung des Problems

Irgendwie müssen wir actionPerformed() so schreiben, dass sie für jeden Button etwas anderes macht. Wir betrachten noch einmal die Methode:


  public void actionPerformed( ActionEvent evt)
  {
    getContentPane().setBackground( Color.green );
    repaint();
  }

Die Abbildung zeigt die gegenwärtige Situation. Ereignisobjekte der beiden Buttons werden an dieselbe Methode geliefert, die den Hintergrund auf Grün setzt, egal welches Ereignis sie empfängt.

red and green buttons

Wir möchten, dass uns das ActionEvent-Objekt, das an actionPerformed() übergeben wird, sagt was getan werden soll. Um das zu tun, können wir jedem Button unterschiedliche Befehle zuordnen, indem wir

setActionCommand(String command)

verwenden. Jetzt sendet jeder Button seinen Befehl (einen String) als Teil des ActionEvent-Objekts, wenn er angeklickt wird. Die actionPerformed() Methode verwendet den Befehl, um zu sehen, was zu tun ist.

Wenn wir setActionCommand() nicht verwenden, um einen Button einen Befehlsstring zuzuordnen, dann enthält der Befehl die gleichen Worte, die als Beschriftung für den Button verwendet werden. Das ist üblicherweise OK, ist aber bei großen Projekten umständlich. Wir wollen in der Lage sein die Beschriftung von Buttons ändern zu können, ohne dass der Rest des Codes geändert werden muss.

FRAGE 10:

Welche Objekte haben eine setActionCommand() Methode?

zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite