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. Betrachten Sie 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 Sie jedem Button unterschiedliche Befehle zuordnen, indem Sie

setActionCommand(String command)

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

Wenn Sie 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. Sie möchten in der Lage sein die Beschriftung von Buttons ändern zu können, ohne dass Sie den Rest des Codes ändern müssen.

FRAGE 10:

Welche Objekte haben eine setActionCommand() Methode?