Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
154<br />
8 <strong>Das</strong> <strong>SWT</strong><br />
8.5 Widgets<br />
In diesem Abschnitt behandeln wir die verschiedenen GUI-Elemente<br />
entlang ihrer Vererbungshierarchie (siehe Abb. 8–1), an deren Spitze<br />
die Klasse Widget steht. Dazu gehören selbstverständlich die unmittelbaren<br />
Bedienelemente wie Tasten (Button), Textfelder (Text) oder<br />
Schieberegler (Slider), aber auch Elemente, die der Gruppierung von<br />
Bedienelementen dienen wie die Klassen Group und Composite.<br />
Die Klasse Widget<br />
Alle GUI-Elemente sind Abkömmlinge der abstrakten Klasse Widget.<br />
Diese Klasse implementiert einige Basismethoden wie dispose() oder<br />
addDisposeListener(). Bei der Ausführung von dispose() sendet sie<br />
allen DisposeListener-Instanzen ein DisposeEvent-Objekt.<br />
Unmittelbarer Abkömmling der Klasse Widget ist die abstrakte<br />
Klasse Control. Instanzen dieser Klasse repräsentieren fensterbezogene<br />
GUI-Elemente und korrelieren direkt mit Ressourcen des Betriebsoder<br />
Fenstersystems.<br />
Die Klasse Control<br />
Die Klasse Control kann folgende Event-Typen an die jeweiligen Listener<br />
schicken: ControlEvent, FocusEvent, HelpEvent, KeyEvent, MouseEvent,<br />
MouseTrackEvent, MouseMoveEvent, PaintEvent. Dazu stellt Control<br />
für die Verwaltung der jeweiligen Listener-Typen verschiedene<br />
add...Listener()- und remove...Listener()-Methoden zur Verfügung.<br />
Außerdem stellt Control ein reichhaltiges Arsenal von Methoden<br />
zur Verfügung, mit denen die verschiedenen Eigenschaften der jeweiligen<br />
GUI-Elemente gesetzt und abgefragt werden können. Insbesondere<br />
sind die Methoden setVisible() und setEnabled() zu erwähnen, mit<br />
denen man GUI-Elemente zeigen und verstecken bzw. für die Eingabe<br />
freigeben oder sperren kann.<br />
Größe und Position Anfänglich wird die Größe von Control-Instanzen auf einen<br />
Default-Wert gesetzt. In vielen Fällen ist das die minimale Größe<br />
(0x0), so dass das entsprechende GUI-Element unsichtbar bleibt. Mit<br />
der Methode setBounds() kann die Größe der Instanz und auch die<br />
Position relativ zum übergeordneten Composite (siehe Abschnitt 8.5.4)<br />
gesetzt werden. Alternativ kann das übergeordnete Composite mit<br />
einem Layout (siehe Abschnitt 8.6) versehen werden, das sich selbsttätig<br />
um die Positionierung der im Composite enthaltenen Control-<br />
Instanzen kümmert. Mit der Methode pack() wird die bevorzugte<br />
Größe bzw. die aus dem Layout abgeleitete Größe neu berechnet.