Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS

GUI 13

Java Swing:


"Container" und "Komponenten" (vgl. Widgets unter X Window und Fenster unter Microsoft Windows):


Komponenten eines Containers werden automatisch nach Vorgaben angeordnet: Layout Manager; Details dazu später.

Beispiel SwingPaintDemo.java
Swing ruft die paint-Methode einer Komponente auf, wenn sie neu gezeichnet werden muss (Fenster vergrößert, Fenster nach vorne geholt ...).
Eigene Ausgaben implementieren: Unterklasse von Komponente anlegen, paint überschreiben.
paint läuft dann in einem eigenen Thread.
Am besten alle Ausgaben zentral in paint packen. Mit Methode repaint() einer GUI-Komponente ihre Bildschirmdarstellung aktualisieren (Aufforderung an Swing, paint aufzurufen).

Beispiel SwingEventDemo.java
Allgemeines Problem bei GUIs: Wie erfährt eine Klasse (z.B. Termin), dass der Benutzer z.B. ein Schaltflächenobjekt betätigt hat? D.h. wie kommunizieren Objekte miteinander? Lösung in Swing: EventListener
Swing-Komponenten können Ereignisse (Mausklicks etc.) an beliebige Klassen melden. Dazu müssen diese Klassen bei den Komponenten mit Komponente.addTypListener(...) als Listener (Zuhörer) anmelden und bestimmte Funktionen besitzen (= Listener-Interface für den jeweiligen Ereignistyp). Die Komponenten rufen dann bei Bedarf  (Mausklicks etc.) diese Methoden auf.

Adapter: Zwischenklassen, die als Listener dienen und Methoden anderer Klassen aufrufen
Swing hat unzählige Adapter vordefiniert, z.B. WindowAdapter. Die kann man namenlos verwenden und dort beim Erzeugen passend Methoden überschreiben, siehe SwingEventDemo.java und SwingPaintDemo.java