Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
8.4 Ereignisse<br />
ner-Instanz aufgerufen. Die Methode erhält als Argument eine<br />
SelectionEvent-Instanz, die das Ereignis repräsentiert.<br />
Beispiel:<br />
public void createButton(Composite parent) {<br />
Button myButton = new Button(parent, <strong>SWT</strong>.PUSH);<br />
myButton.addSelectionListener(new SelectionListener() {<br />
public void widgetSelected(SelectionEvent e) {<br />
System.out.println("Button pressed!");<br />
}<br />
public void widgetDefaultSelected(SelectionEvent e) {<br />
}<br />
});<br />
}<br />
Hier haben wir für einen neu erzeugten Button eine innere anonyme<br />
SelectionListener-Klasse als Zuhörer definiert.<br />
Zu jeder Methode add...Listener() gibt es natürlich auch eine<br />
Methode remove...Listener(). Insbesondere in komplexen Systemen<br />
sollten Komponenten, die sich bei anderen Komponenten als Zuhörer<br />
registrieren, auch wieder mit remove...Listener() abmelden, wenn sie<br />
deaktiviert werden. So kann überflüssiger Overhead vermieden werden.<br />
Später, wenn die Komponente wieder aktiviert wird, kann sie sich<br />
ja wieder mit add...Listener() anmelden.<br />
Genau aus diesem Grund sollte man auch keine Annahmen über<br />
die zeitliche Reihenfolge beim Aufruf von registrierten Listenern<br />
machen. Zwar wird intern beim Auftreten eines Ereignisses die Liste<br />
der Zuhörer sequenziell abgearbeitet, da sich jedoch Komponenten in<br />
eigener Regie an- und abmelden können, ist es praktisch unmöglich,<br />
die Übersicht zu behalten, welcher Zuhörer vor oder nach einem anderen<br />
aufgerufen wird.<br />
8.4.2 Adapter<br />
Adapter sind Standardimplementierungen der jeweiligen Interfaces. Sie<br />
enthalten leere Methoden für jede im Interface definierte Methode.<br />
Adapter dienen so dem Komfort des Programmierers. Anstatt alle<br />
Methoden eines Interface komplett implementieren zu müssen, definiert<br />
man lediglich eine Unterklasse des zugehörigen Adapters und<br />
überschreibt diejenigen Methoden, die im konkreten Anwendungsfall<br />
von Interesse sind.<br />
Im obigen Beispiel hätten wir natürlich auch einen SelectionAdapter<br />
verwenden und so auf die Angabe der leeren Methode widget-<br />
DefaultSelected() verzichten können:<br />
151