![]() |
![]() |
![]() |
![]() |
![]() |
Fensteranwendungen mit dem JavaEditor sind (fast) ein Kinderspiel:
Frame
)Fenster1.java
Ach ja, beenden kann man das Programm auch, klicke auf das kleine Kreuzchen oben rechts . . .
<<<Ein Programm beenden, das ist nichts großartiges, welch ein Irrtum! Es genügt, folgende vom JavaEditor erzeugte Zeilen zu löschen, und nichts geht mehr!
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } });
Wir schauen uns das Hauptprogramm an:
1 public static void main(String args[]) { 2 new Fenster1("Fenster1"); 3 }
Als erstes geben wir unserem Fenster einen Namen und einen Titel: schreibe in Zeile 2:
Fenster1 f = new Fenster1(" BaNcOmAt ");
und überprüfe dein Ergebnis! Welchen Namen hat dein Fenster jetzt? Und wie heißt die Klasse?
Als nächstes ergänzen wir nach Zeile 2:
f.setSize(200,100); f.show();
Übersetzen, Starten, was verändert sich im Fenster?
Und jetzt kommen wir zu unserer Überschrift: Buttons
1. Teil: Hinzufügen.
Begebe dich in die Methode public Fenster1(String Titel)
und füge dort zwischen
// Anfang Komponenten
und
// Ende Komponenten
folgende Zeilen hinzu:
Button ende = new Button("BeEnden"); setLayout(new FlowLayout() ); add(ende);
Erklärungen kommen gleich, davor bitte abspeichern und ausprobieren. PS: Klicken zwecklos! Dein Fenster sollte jetzt so ähnlich aussehen:
Erklärungen zu den drei Zeilen:
Button ende = new Button("BeEnden");
Hier wird ein Button mit dem Namen ende vereinbart, seine Beschriftung lautet "BeEnden".
setLayout(new FlowLayout() );
Der Button kommt in ein Fenster hinein, und die Anordnung der Elemente (Buttons!) muss irgendwie verwaltet werden. Diese Aufgabe übernimmt der Layout Manager, und diese Zeile musst du später nicht mehr wiederholen!
add(ende);
Den Button vereinbaren hilft überhaupt nicht, wenn wir ihn nicht zum Fenster hinzufügen, diese Aufgabe übernimmt die Methode add. Wenn wir gleich weitere Buttons benötigen, dann musst du auch diese Buttons erst mit add hinzufügen, davor sieht man wirklich nichts! (Ausprobieren!)
Und warum hilft kein Klicken nicht? Später! Jetzt bitte erst folgendes Fenster herstellen:
Wie? Nun erst den Button vereinbaren und dann mit add hinzufügen. add verlangt als Parameter den Namen, den du dem Button gegeben hast, im Beispiel oben ist das ende
!
Kommen wir zum zweiten Teil: Ereignisse und Ereignisbehandlung
Und warum geht das Klicken nicht? Tja, das ist eben die Kunst der Fensterprogrammierung. Überlege bitte: DU bist so ein Fensterprogramm und wartest, und wartest, und wartest. Worauf? Na, dass irgendwer auf den Button "BeEnden" klickt. Und wenn dieses Ereignis endlich eintritt, dann kommt dein großer Augenblick als Fensterprogramm: du darfst irgendeine Aktion ausführen, beispielsweise das Programm beenden, oder eine unglaublich wichtige Meldung ausgeben! Nur: irgendwer muss für diese Verbindung zwischen dem Ereignis Button klicken
und der Aktion Programm beenden
sorgen und das ist deine Aufgabe als ProgrammiererIn. Gratulation!
ende
mit der Aktion verbinden, irgendwo nach dem add(ende)
folgende Zeile hinzufügen:ende.addActionListener( new MeinEndeActionListener() );
addActionListener
wird dem Button ende
mitgeteilt: hör mal zu, hier ist eine Methode, die führst du aus, wenn jemand auf den Button klickt! Und wie heißt die Methode? Das erklären wir in
MeinEndeActionListener()
und ist keine Methode, sondern eine Klasse!
Beachte bitte die Schreibweise und bedenke: Java unterscheidet GROß- und kleinschreibung.
Wo kommt die Klasse her??? Nun, ich musste sie programmieren! Und wo kommt sie hin? Zwischen
die Zeilen // Anfang Ereignisprozeduren
und // Ende Ereignisprozeduren
class MeinEndeActionListener implements ActionListener { public void actionPerformed( ActionEvent e ) { System.exit(0); } }Hier ist jeder einzelne Buchstabe wichtig! Frage: Welcher Teil dieser Klasse wurde im Programm Fenster1.java schon mal benutzt?
BeEnden
mit Erfolgreich ausgeführt!
Versprochen!
gibt es diesmal keine, der JavaEditor erzeugt das Beispielprogramm von heute "automatisch"!
<<<ende
mit einer Aktion (man sagt auch: Ereignisbehandlungsroutine) zu verbinden, siehe oben im Mini-HowTo!
Starte Anwendung Wegen Streik geschlossen! Kontostand: - 33333.99 EUR Wegen Streik geschlossen! Wegen Streik geschlossen! Kontostand: - 33333.99 EURWo erscheint diese Ausgabe? Im MS-DOS-Konsolenfenster! Du verbindest den Button mit der Beschriftung
Auszahlung
mit der Ausgabe "Wegen Streik geschlossen!"
und den Button mit der Beschriftung Kontostand
mit der Ausgabe "Kontostand: - 33333.99 EUR"
BankKonto
auf! Wo wird das Konto vereinbart?
Am Anfang:
// Anfang Variablen public BankKonto bk1 = new BankKonto(100.00); // Konto erzeugen // Ende VariablenDann können wir auch vom Eventhandler (= Ereignisbehandler) aus auf das Bankkonto zugreifen, Beispiel:
class MeinKontostandActionListener implements ActionListener { public void actionPerformed( ActionEvent e ) { bk1.anzeigen(); } }Beachte: Die Klasse
BankKonto
muss (!) im gleichen
Verzeichnis stehen, wie deine Fensterprogramme, sonst findet der java-Compiler
die Klassen nicht!