20.08.2012 Aufrufe

8 Das SWT

8 Das SWT

8 Das SWT

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!