|
Ein Component-Event wird generiert, wenn eine Komponente verschoben oder ihre Größe verändert wurde oder wenn sich der Anzeigezustand einer Komponente verändert hat. Da sowohl Fenster als auch alle Dialogelemente aus der Klasse Component abgeleitet sind, haben die hier erwähnten Ereignisse für nahezu alle GUI-Elemente des AWT Gültigkeit.
Ein Empfänger für Component-Events muß das Interface ComponentListener implementieren und bekommt Events des Typs ComponentEvent übergeben. ComponentEvent erweitert die Klasse AWTEvent und stellt neben getID und getSource die Methode getComponent zur Verfügung, mit der die Komponente ermittelt werden kann, die die Nachricht ausgelöst hat.
public Component getComponent() |
java.awt.event.ComponentEvent |
Die Registrierung der Empfängerklasse erfolgt mit der Methode addComponentListener, die in allen aus Component abgeleiteten Klassen zur Verfügung steht:
public void addComponentListener(ComponentListener l) |
java.awt.Component |
Tabelle 19.2 gibt eine Übersicht der Methoden von ComponentListener und erklärt ihre Bedeutung:
Ereignismethode | Bedeutung |
componentShown | Eine Komponente wurde sichtbar. |
componentHidden | Eine Komponente wurde unsichtbar. |
componentMoved | Eine Komponente wurde verschoben. |
componentResized | Die Größe einer Komponente hat sich geändert. |
Tabelle 19.2: Methoden von ComponentListener
Das folgende Programm demonstriert die Anwendung der Methoden componentMoved und componentResized am Beispiel eines Fensters BirdsEyeFrame, das schematisch sich selbst und seine Lage auf dem Desktop aus der Vogelperspektive darstellt. Wird das Fenster verschoben oder seine Größe geändert, so paßt es seine eigene Darstellung proportional an und zeichnet die Client-Area neu. Die Implementierung der paint-methode ermittelt dazu die Seitenverhältnisse von Fenster und Desktop und verwendet diese als Quotient zur Anzeige des Fensters im Fenster. Um auf die Component-Events zu reagieren, registriert BirdsEyeFrame die Adapterklasse ComponentRepaintAdapter, die die Methoden componentMoved und componentResized implementiert. Sie werden immer dann aufgerufen, wenn das Fenster verschoben oder in der Größe geändert wurde und rufen repaint auf, um das Fenster neu zu zeichnen. Auf diese Weise werden alle Änderungen des Frames sofort in seiner eigenen Client-Area gespiegelt:
|
![]() |
|
![]() |
Die Ausgabe des Programms ist:
Abbildung 19.1: Das Fenster sieht sich selbst aus der Vogelperspektive
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |