19.4
Mehrere Ereignisse |
|
ein Rechner entsteht | Die
nächsten beiden Bilder zeigen einen Rechner, der über zwei Funktionen
verfügt. In den Eingabefeldern werden die Werte von a und b eingegeben. In
unserem Beispiel sind es die Werte 144 bzw. 60. Im Ausgabefeld erscheint,
je nachdem, welcher Button gedrückt wurde der ggT der beiden Zahlen, also
12 bzw. das kgV der beiden Zahlen, also 720.
In diesem Kapitel lernen wir, wie
wir ein Javaprogramm schreiben, das auf Drücken unterschiedlicher
Buttons auch unterschiedlich reagiert. Wir schauen uns dazu den Quelltext
des Programms etwas genauer an. |
Download: Rechner. java Mathematik. class |
import
java.awt.*; |
Beschrei- bung | Die
wesentlichen Veränderungen sind gelb unterlegt. Die erste so markierte
Stelle ´zeigt eine Modifikation des GridLayouts. Die Parameter 1,2,10,10
besagen, dass die in diesem Panel abgelegte Objekte in einer Zeile und 2
Spalten abgelegt werden. Zwischen den Buttons werden in horizontaler und
vertikaler Richtung jeweils 10 Pixel Abstand gehalten. Die so für die
Aufnahme von Grafikobjekten vorbereiteten Felder werden in der Reihenfolge,
wie sie auf dem Panel abgelegt werden, eingefügt, Die zweite Veränderung: Wird ein Button gedrückt, so sendet es ein Objekt der Klasse ActionEvent an seine Empfänger aus. Der Empfänger muss dazu registriert sein.
Diese Zeile bewirkt, dass der ggTButton belauscht wird und damit seine Botschaften wahrgenommen werden. An wen werden sie geschickt? Das steht in der Klammer. Als Empfänger kommen Objekte des Typs ActionListener in Frage, also Objekte, deren Klassen das Interface ActionListener implementiert haben. Unsre Klasse Rechner erfüllt diese Bedingung, wird also durch this in der Klammer zum Empfänger, kann also die Botschaft empfangen und entsprechend darauf reagieren. Natürlich könnte in der Klammer auch ein anderes Empfänger-Objekt stehen. Nun bekommt der Rechner über den
"Lauscher" mit , dass ein Button gedrückt ist. Welcher Button war es aber?
Mit der Methode getSource()
aus
der Klasse ActionEvent
ermittelt das Ereignis, das in
obj
einem Objekt der Klasse Object
gespeichert ist. Warum wird das Ereignis gerade in dieser Klasse speichern,
werden wir später besser verstehen. Der Rest ist nun einfach und erklärt
sich von selbst: Wir fragen den Inhalt von
obj
(z.B. if(
obj == ggTButton)) und
berechnen die Ausgabe entsprechend. |
zu 19.5 | Der komplette Rechner |
zur Startseite | www.pohlig.de (C) MPohlig 2003 |