diff options
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100181.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100181.html | 1106 |
1 files changed, 1106 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100181.html b/Master/Reference Architectures and Patterns/hjp5/html/k100181.html new file mode 100644 index 0000000..424cb41 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100181.html @@ -0,0 +1,1106 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100180.html;106,k100180.html;107,k100182.html;108,k100184.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100180.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100180.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100182.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100184.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 28 - Event-Handling
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id028001"></a>
+<h2>28.1 Das Event-Handling im JDK 1.1 </h2>
+<hr>
+<ul>
+<li><a href="k100181.html#sectlevel2id028001">28.1 Das Event-Handling im JDK 1.1</a>
+<ul>
+<li><a href="k100181.html#sectlevel3id028001001">28.1.1 Grundlagen</a>
+<li><a href="k100181.html#sectlevel3id028001002">28.1.2 Ereignistypen</a>
+<li><a href="k100181.html#sectlevel3id028001003">28.1.3 Ereignisempfänger</a>
+<li><a href="k100181.html#sectlevel3id028001004">28.1.4 Ereignisquellen</a>
+<li><a href="k100181.html#sectlevel3id028001005">28.1.5 Adapterklassen</a>
+<li><a href="k100181.html#sectlevel3id028001006">28.1.6 Zusammenfassung</a>
+<ul>
+<li><a href="k100181.html#sectlevel4id028001006001">Focus-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006002">Key-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006003">Mouse-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006004">MouseMotion-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006005">Component-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006006">Container-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006007">Window-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006008">Action-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006009">Adjustment-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006010">Item-Ereignisse</a>
+<li><a href="k100181.html#sectlevel4id028001006011">Text-Ereignisse</a>
+</ul>
+</ul>
+</ul>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel3id028001001"></a>
+<h3>28.1.1 Grundlagen </h3>
+
+<p>
+Bei der Programmierung unter einer grafischen Oberfläche erfolgt
+die Kommunikation zwischen Betriebssystem und Anwendungsprogramm zu
+einem wesentlichen Teil durch das Versenden von Nachrichten. Die Anwendung
+wird dabei über alle Arten von Ereignissen und Zustandsänderungen
+vom Betriebssystem informiert. Dazu zählen beispielsweise Mausklicks,
+Bewegungen des Mauszeigers, Tastatureingaben oder Veränderungen
+an der Größe oder Lage des Fensters.
+
+<p>
+Bei der Verarbeitung des Nachrichtenverkehrs sind zwei verschiedene
+Arten von Objekten beteiligt. Die <a name="ixa101802"><i>Ereignisquellen</i></a>
+(<a name="ixa101803"><i>Event Sources</i></a>) sind die Auslöser
+der Nachrichten. Eine Ereignisquelle kann beispielsweise ein Button
+sein, der auf einen Mausklick reagiert, oder ein Fenster, das mitteilt,
+dass es über das Systemmenü geschlossen werden soll. Die
+Reaktion auf diese Nachrichten erfolgt in den speziellen <a name="ixa101804"><i>Ereignisempfängern</i></a>
+(den <a name="ixa101805"><i>EventListeners</i></a>); das sind Objekte,
+die das zum Ereignis passende Empfänger-Interface implementieren.
+Damit ein Ereignisempfänger die Nachrichten einer bestimmten
+Ereignisquelle erhält, muss er sich bei dieser registrieren.
+
+<p>
+Dieses Kommunikationsmodell nennt sich <i>Delegation Event Model</i>
+oder <a name="ixa101806"><i>Delegation Based Event Handling</i></a>
+und wurde mit der Version 1.1 des JDK eingeführt. Im Gegensatz
+zum alten Modell, bei dem jedes Ereignis die Verteilermethode <a name="ixa101807"><a href="index_h.html#ixb101394"><font color=#000080><tt>handleEvent</tt></font></a></a>
+der Klasse <a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
+durchlaufen mußte und von ihr an die verschiedenen Empfänger
+verteilt wurde, hat dieses neue Modell zwei wesentliche Vorteile:
+<ul>
+<li>Es verringert den Nachrichtenverkehr, da nur noch die Ereignisse
+transportiert werden, für die es Empfänger gibt. Dadurch
+erhöht sich potentiell die Performance des Nachrichtentransports
+im AWT.
+<li>Es erlaubt eine klare Trennung zwischen Programmcode zur Oberflächengestaltung
+und solchem zur Implementierung der Anwendungslogik. Es erleichtert
+dadurch die Erzeugung von robustem Code, der auch in großen
+Programmen den Entwurf sauber strukturierter Ereignishandler ermöglicht.
+</ul>
+
+<p>
+Diesen Vorteilen steht natürlich der etwas höhere Einarbeitungsaufwand
+gegenüber. Während man beispielsweise im AWT 1.0 einfach
+die <a name="ixa101808"><a href="index_a.html#ixb101395"><font color=#000080><tt>action</tt></font></a></a>-Methode
+des Fensters überlagerte, um auf einen Buttonklick zu reagieren,
+muss man nun eine <a name="ixa101809"><a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a></a>-Klasse
+schreiben, instanzieren und bei der Ereignisquelle registrieren.
+
+<p>
+Zudem werden wir feststellen, dass das neue Modell eine Vielzahl von
+unterschiedlichen Möglichkeiten impliziert, Ereignishandler zu
+implementieren. Diese sind je nach Anwendungsfall unterschiedlich
+gut oder schlecht geeignet, den jeweiligen Nachrichtenverkehr abzubilden.
+Wir werden uns in diesem Kapitel insbesondere mit folgenden Entwurfsmustern
+beschäftigen:
+<ul>
+<li>Die Fensterklasse implementiert die erforderlichen <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>-Interfaces,
+stellt die erforderlichen Callback-Methoden zur Verfügung und
+registriert sich selbst bei den Ereignisquellen.
+<li>In der Fensterklasse werden lokale oder anonyme Klassen definiert,
+die einen <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>
+implementieren oder sich aus einer <a name="ixa101810"><i>Adapterklasse</i></a>
+ableiten (eine Adapterklasse implementiert ein Interface mit mehreren
+Methoden und erlaubt es somit abgeleiteten Klassen, nur noch die Methoden
+zu überlagern, die tatsächlich von Interesse sind).
+<li>GUI-Code und Ereignisbehandlung werden vollkommen getrennt und
+auf unterschiedliche Klassen verteilt.
+<li>In der Komponentenklasse werden die Methoden überlagert,
+die für das Empfangen und Verteilen der Nachrichten erforderlich
+sind.
+</ul>
+
+<p>
+Wir werden uns jede dieser Varianten in den nachfolgenden Abschnitten
+ansehen und ihre jeweiligen Einsatzmöglichkeiten anhand eines
+Beispiels aufzeigen. Zunächst sollen jedoch die verschiedenen
+Ereignistypen sowie die Ereignisempfänger und Ereignisquellen
+näher beleuchtet werden. Wir wollen dabei (etwas unscharf) die
+Begriffe Ereignis, Nachricht und Event in diesem Kapitel synonym verwenden,
+wenn wir innerhalb eines GUI-Programms die ausgetauschten Nachrichten
+oder ihre auslösenden Ereignisse meinen.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Das vorliegende Kapitel beschränkt sich auf das Erläutern
+der grundlegenden Eigenschaften des Event-Handlings im JDK 1.1. Die
+Details einzelner Ereignisarten werden in den nachfolgenden Kapiteln
+schrittweise erklärt und zusammen mit den zugehörigen Ereignisquellen
+vorgestellt.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id028001002"></a>
+<h3>28.1.2 <a name="ixa101811">Ereignistypen</a></h3>
+
+<p>
+Im Gegensatz zur Version 1.0 werden im JDK 1.1 die Ereignistypen nicht
+mehr durch eine einzige Klasse <a name="ixa101812"><a href="index_e.html#ixb101399"><font color=#000080><tt>Event</tt></font></a></a>
+repräsentiert, sondern durch eine Hierarchie von Ereignisklassen,
+die aus der Klasse <a name="ixa101813"><a href="index_e.html#ixb101400"><font color=#000080><tt>java.util.EventObject</tt></font></a></a>
+abgeleitet sind. Die Motivation der Java-Designer, diese Klasse in
+das Paket <a name="ixa101814"><a href="index_j.html#ixb100127"><font color=#000080><tt>java.util</tt></font></a></a>
+zu legen, resultierte wohl aus der Überlegung, dass der Transfer
+von Nachrichten nicht allein auf den Oberflächenteil beschränkt
+sein muss, sondern auch zwischen anderen Elementen einer komplexen
+Anwendung sinnvoll sein kann. Die Klasse <a href="index_e.html#ixb101400"><font color=#000080><tt>java.util.EventObject</tt></font></a>
+fungiert damit als allgemeine Oberklasse aller Arten von Ereignissen,
+die zwischen verschiedenen Programmteilen ausgetauscht werden können.
+Ihre einzige nennenswerte Fähigkeit besteht darin, das Objekt
+zu speichern, das die Nachricht ausgelöst hat, und durch Aufruf
+der Methode <a name="ixa101815"><a href="index_g.html#ixb101401"><font color=#000080><tt>getSource</tt></font></a></a>
+anzugeben:
+
+<p>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+public Object getSource()
+</pre>
+</font>
+</td>
+<td valign=top>
+<a href="../jdkdocs/api/java/util/EventObject.html" onClick="this.href=getApiDoc('java.util.EventObject')"><font color="#660066" size=-1>java.util.EventObject</font></a></td>
+</tr>
+</table>
+
+<p>
+Die Hierarchie der AWT-spezifischen Ereignisklassen beginnt eine Ebene
+tiefer mit der Klasse <a name="ixa101816"><a href="index_a.html#ixb101402"><font color=#000080><tt>AWTEvent</tt></font></a></a>,
+die aus <a name="ixa101813"><a href="index_e.html#ixb101400"><font color=#000080><tt>EventObject</tt></font></a></a>
+abgeleitet wurde und sich im Paket <a href="index_j.html#ixb100190"><font color=#000080><tt>java.awt</tt></font></a>
+befindet. <a href="index_a.html#ixb101402"><font color=#000080><tt>AWTEvent</tt></font></a>
+ist Oberklasse aller Ereignisklassen des AWT. Diese befinden sich
+im Paket <a name="ixa101817"><a href="index_j.html#ixb100191"><font color=#000080><tt>java.awt.event</tt></font></a></a>,
+das damit praktisch in jede Klasse einzubinden ist, die sich mit dem
+Event-Handling von GUI-Anwendungen beschäftigt. <a href="k100181.html#hierarchieereignisklassen">Abbildung 28.1</a>
+gibt einen Überblick über die Vererbungshierarchie der Ereignisklassen.
+<p>
+<a name="hierarchieereignisklassen"></a>
+<img src="images/VererbEvent.gif">
+<p>
+
+<p><i>
+Abbildung 28.1: Die Hierarchie der Ereignisklassen</i></p>
+
+<p>
+Die Dokumentation zum JDK unterteilt diese Klassen in zwei große
+Hierarchien. Unterhalb der Klasse <a name="ixa101818"><a href="index_c.html#ixb101403"><font color=#000080><tt>ComponentEvent</tt></font></a></a>
+befinden sich alle <i>Low-Level-Ereignisse</i>. Sie sind für
+den Transfer von elementaren Nachrichten zuständig, die von Fenstern
+oder Dialogelementen stammen. Die übrigen Klassen <a name="ixa101819"><a href="index_a.html#ixb101404"><font color=#000080><tt>ActionEvent</tt></font></a></a>,
+<a name="ixa101820"><a href="index_a.html#ixb101405"><font color=#000080><tt>AdjustmentEvent</tt></font></a></a>,
+<a name="ixa101821"><a href="index_i.html#ixb101406"><font color=#000080><tt>ItemEvent</tt></font></a></a>
+und <a name="ixa101822"><a href="index_t.html#ixb101407"><font color=#000080><tt>TextEvent</tt></font></a></a>
+werden als <i>semantische Ereignisse</i> bezeichnet. Sie sind nicht
+an ein bestimmtes GUI-Element gebunden, sondern übermitteln höherwertige
+Ereignisse wie das Ausführen eines Kommandos oder die Änderung
+eines Zustands.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Ein Problem der AWT-Designer war es, einen guten Kompromiss zwischen
+der Größe und der Anzahl der zu implementierenden Ereignissklassen
+zu finden. Da der Ableitungsbaum sehr unübersichtlich geworden
+wäre, wenn für jedes Elementarereignis eine eigene Klasse
+implementiert worden wäre, hat man sich teilweise dazu entschlossen,
+mehrere unterschiedliche Ereignisse durch eine einzige Klasse zu realisieren.
+So ist beispielsweise die Klasse <a name="ixa101823"><a href="index_m.html#ixb101408"><font color=#000080><tt>MouseEvent</tt></font></a></a>
+sowohl für Mausbewegungen als auch für alle Arten von Klick-
+oder Drag-Ereignissen zuständig. Mit Hilfe der Methode <a name="ixa101824"><a href="index_g.html#ixb101409"><font color=#000080><tt>getID</tt></font></a></a>
+und der in den jeweiligen Eventklassen definierten symbolischen Konstanten
+kann das Programm herausfinden, um welche Art von Ereignis es sich
+handelt:</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+public int getID()
+</pre>
+</font>
+</td>
+<td valign=top>
+<a href="../jdkdocs/api/java/awt/AWTEvent.html" onClick="this.href=getApiDoc('java.awt.AWTEvent')"><font color="#660066" size=-1>java.awt.AWTEvent</font></a></td>
+</tr>
+</table>
+
+<p>
+Falls das Programm eigene Eventklassen definieren will und Konstanten
+zur Vergabe der Event-Ids vergeben muss, sollten diese oberhalb der
+symbolischen Konstante <a name="ixa101825"><a href="index_r.html#ixb101410"><font color=#000080><tt>RESERVED_ID_MAX</tt></font></a></a>
+liegen.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Die Eventklassen im JDK 1.1 enthalten keine frei zugänglichen
+Felder. Statt dessen sind alle Eigenschaften durch <a href="index_s.html#ixb100181"><font color=#000080><tt>set</tt></font></a>-/<a href="index_g.html#ixb100699"><font color=#000080><tt>get</tt></font></a>-Methoden
+gekapselt, die je nach Ereignisklasse unterschiedlich sind. So gibt
+es beispielsweise in <a href="index_m.html#ixb101408"><font color=#000080><tt>MouseEvent</tt></font></a>
+die Methode <a name="ixa101826"><a href="index_g.html#ixb101411"><font color=#000080><tt>getPoint</tt></font></a></a>,
+mit der die Mauszeigerposition abgefragt werden kann, in <a name="ixa101827"><a href="index_k.html#ixb101412"><font color=#000080><tt>KeyEvent</tt></font></a></a>
+die Methode <a name="ixa101828"><a href="index_g.html#ixb101413"><font color=#000080><tt>getKeyChar</tt></font></a></a>
+zur Bestimmung der gedrückten Taste und in der übergeordneten
+Klasse <a name="ixa101829"><a href="index_i.html#ixb101414"><font color=#000080><tt>InputEvent</tt></font></a></a>
+die Methode <a name="ixa101830"><a href="index_g.html#ixb101415"><font color=#000080><tt>getModifiers</tt></font></a></a>,
+mit der sowohl für Maus- als auch für Tastaturevents der
+Zustand der Sondertasten bestimmt werden kann. Wir werden bei der
+Besprechung der einzelnen Ereignisarten auf die Details eingehen.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id028001003"></a>
+<h3>28.1.3 <a name="ixa101831">Ereignisempfänger</a></h3>
+
+<p>
+Damit ein Objekt Nachrichten empfangen kann, muss es eine Reihe von
+Methoden implementieren, die von der Nachrichtenquelle, bei der es
+sich registriert hat, aufgerufen werden können. Um sicherzustellen,
+dass diese Methoden vorhanden sind, müssen die Ereignisempfänger
+bestimmte Interfaces implementieren, die aus der Klasse <a name="ixa101832"><a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a></a>
+des Pakets <a href="index_j.html#ixb100127"><font color=#000080><tt>java.util</tt></font></a>
+abgeleitet sind. Diese <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>-Interfaces
+befinden sich im Paket <font color="#000077"><tt>java.awt.event</tt></font>.
+
+<p>
+Je Ereignisklasse gibt es ein <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>-Interface.
+Es definiert eine separate Methode für jede Ereignisart dieser
+Ereignisklasse. So besitzt beispielsweise das Interface <a href="index_m.html#ixb101416"><font color=#000080><tt>MouseListener</tt></font></a>
+die Methoden <a href="index_m.html#ixb101417"><font color=#000080><tt>mouseClicked</tt></font></a>,
+<a href="index_m.html#ixb101418"><font color=#000080><tt>mouseEntered</tt></font></a>,
+<a href="index_m.html#ixb101419"><font color=#000080><tt>mouseExited</tt></font></a>,
+<a href="index_m.html#ixb101420"><font color=#000080><tt>mousePressed</tt></font></a>
+und <a href="index_m.html#ixb101421"><font color=#000080><tt>mouseReleased</tt></font></a>,
+die bei Auftreten des jeweiligen Ereignisses aufgerufen werden. <a href="k100181.html#hierarchieeventlistener">Abbildung 28.2</a>
+gibt eine Übersicht über die Hierarchie der <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>-Interfaces.
+<p>
+<a name="hierarchieeventlistener"></a>
+<img src="images/VererbListener.gif">
+<p>
+
+<p><i>
+Abbildung 28.2: Die Hierarchie der EventListener-Interfaces</i></p>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Jede der Methoden eines Listener-Interfaces enthält als einziges
+Argument ein Objekt vom zugehörigen Ereignistyp. Alle Methoden
+sind vom Typ <a href="index_v.html#ixb100334"><font color=#000080><tt>void</tt></font></a>,
+erzeugen also keinen Rückgabewert. Dies steht in strengem Kontrast
+zu den Ereignishandlern des AWT 1.0, bei denen der Rückgabewert
+darüber entschieden hat, ob das Ereignis in der Vererbungshierarchie
+weiter nach oben gereicht werden sollte oder nicht. Im AWT 1.1 werden
+Ereignisse dagegen grundsätzlich nicht automatisch weitergereicht.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id028001004"></a>
+<h3>28.1.4 <a name="ixa101833">Ereignisquellen</a></h3>
+
+<p>
+Die Ereignisse stammen von den <i>Ereignisquellen</i>, also von Fenstern,
+Dialogelementen oder höheren Programmobjekten. Eine Ereignisquelle
+sendet aber nur dann Ereignisse an einen Ereignisempfänger, wenn
+dieser sich bei der Ereignisquelle <i>registriert</i> hat. Fehlt eine
+solche Registrierung, wird die Ereignisquelle keine Ereignisse senden
+und der Empfänger folglich auch keine erhalten.
+
+<p>
+Die Registrierung erfolgt mit speziellen Methoden, an die ein Objekt
+übergeben wird, das das jeweilige <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>-Interface
+implementiert. So gibt es beispielsweise eine Methode <a href="index_a.html#ixb101422"><font color=#000080><tt>addMouseListener</tt></font></a>
+in der Klasse <a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>,
+mit der ein Objekt, das das Interface <a href="index_m.html#ixb101416"><font color=#000080><tt>MouseListener</tt></font></a>
+implementiert, sich für den Empfang von Mausereignissen bei der
+Komponente registrieren lassen kann. Nach erfolgter Registrierung
+wird bei jedem Mausereignis die entsprechende Methode <a href="index_m.html#ixb101417"><font color=#000080><tt>mouseClicked</tt></font></a>,
+<a href="index_m.html#ixb101418"><font color=#000080><tt>mouseEntered</tt></font></a>,
+<a href="index_m.html#ixb101419"><font color=#000080><tt>mouseExited</tt></font></a>,
+<a href="index_m.html#ixb101420"><font color=#000080><tt>mousePressed</tt></font></a>
+oder <a href="index_m.html#ixb101421"><font color=#000080><tt>mouseReleased</tt></font></a>
+aufgerufen.
+
+<p>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Die Ereignisquellen unterstützen das Multicasting von Ereignissen.
+Dabei kann eine Ereignisquelle nicht nur einen einzelnen <a href="index_e.html#ixb101396"><font color=#000080><tt>EventListener</tt></font></a>
+mit Nachrichten versorgen, sondern eine beliebige Anzahl von ihnen.
+Jeder Aufruf von <font color="#000077"><tt>addXYZListener</tt></font>
+registriert dabei einen weiteren Listener in der Ereignisquelle. Das
+AWT definiert nicht, in welcher Reihenfolge die verschiedenen Ereignisempfänger
+beim Auftreten eines Ereignisses aufgerufen werden, und empfiehlt
+den Programmen, hierüber keine Annahmen zu treffen.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id028001005"></a>
+<h3>28.1.5 Adapterklassen </h3>
+
+<p>
+Eine <a name="ixa101834"><i>Adapterklasse</i></a> in Java ist eine
+Klasse, die ein vorgegebenes Interface mit leeren Methodenrümpfen
+implementiert. Adapterklassen können verwendet werden, wenn aus
+einem Interface lediglich ein Teil der Methoden benötigt wird,
+der Rest aber uninteressant ist. In diesem Fall leitet man einfach
+eine neue Klasse aus der Adapterklasse ab, anstatt das zugehörige
+Interface zu implementieren, und überlagert die benötigten
+Methoden. Alle übrigen Methoden des Interfaces werden von der
+Basisklasse zur Verfügung gestellt.
+
+<p>
+Zu jedem der Low-Level-Ereignisempfänger stellt das Paket <a href="index_j.html#ixb100191"><font color=#000080><tt>java.awt.event</tt></font></a>
+eine passende Adapterklasse zur Verfügung. So gibt es die Adapterklassen
+<a name="ixa101835"><a href="index_f.html#ixb101423"><font color=#000080><tt>FocusAdapter</tt></font></a></a>,
+<a name="ixa101836"><a href="index_k.html#ixb101424"><font color=#000080><tt>KeyAdapter</tt></font></a></a>,
+<a name="ixa101837"><a href="index_m.html#ixb101425"><font color=#000080><tt>MouseAdapter</tt></font></a></a>,
+<a name="ixa101838"><a href="index_m.html#ixb101426"><font color=#000080><tt>MouseMotionAdapter</tt></font></a></a>,
+<a name="ixa101839"><a href="index_c.html#ixb101427"><font color=#000080><tt>ComponentAdapter</tt></font></a></a>,
+<a name="ixa101840"><a href="index_c.html#ixb101428"><font color=#000080><tt>ContainerAdapter</tt></font></a></a>
+und <a name="ixa101841"><a href="index_w.html#ixb101429"><font color=#000080><tt>WindowAdapter</tt></font></a></a>.
+Sie implementieren die korrespondierenden Interfaces. Wir werden später
+bei der Beschreibung der lokalen und anonymen Klassen sehen, wie die
+Adapterklassen bei der Realisierung der Ereignisempfänger hilfreich
+sein können.
+
+<!-- Section -->
+
+<a name="sectlevel3id028001006"></a>
+<h3>28.1.6 Zusammenfassung </h3>
+
+<p>
+Der folgende Überblick bündelt die bisherigen Ausführungen
+und gibt eine Zusammenfassung aller Ereignisse nebst zugehörigen
+Ereignisempfängern und ihren Methoden. Außerdem sind die
+Ereignisquellen und die Methoden zur Registrierung der Ereignisse
+angegeben. Jeder Ereignistyp wird dabei durch zwei Tabellen dargestellt.
+Die erste gibt die zugehörige Ereignisklasse, das Listener-Interface
+und den Namen der Methode zur Registrierung von Ereignisempfängern
+an. Sie listet außerdem die als Ereignisquelle in Frage kommenden
+Klassen auf. Die zweite Tabelle enthält alle Methoden des zugehörigen
+Listener-Interfaces und beschreibt damit die zu diesem Ereignistyp
+gehörenden Elementarereignisse.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Genaugenommen nimmt dieser Abschnitt Informationen vorweg, die in
+späteren Teilen des Buches konkretisiert werden. Obwohl zum jetzigen
+Zeitpunkt nicht alle Ereignisse in ihrer vollen Bedeutung dargestellt
+werden können, mag diese Übersicht für die weitere
+Arbeit mit dem AWT und zum Nachschlagen hilfreich sein.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006001"></a>
+<h4><a name="ixa101842">Focus-Ereignisse</a></h4>
+<a name="tableid028001"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101843"><a href="index_f.html#ixb101431"><font color=#000080><tt>FocusEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101844"><a href="index_f.html#ixb101432"><font color=#000080><tt>FocusListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101845"><a href="index_a.html#ixb101433"><font color=#000080><tt>addFocusListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.1: Focus-Ereignisse </i></p>
+<a name="tableid028002"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101846"><a href="index_f.html#ixb101434"><font color=#000080><tt>focusGained</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente erhält den Focus. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101847"><a href="index_f.html#ixb101435"><font color=#000080><tt>focusLost</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente verliert den Focus. </td></tr>
+</table>
+<p><i>
+Tabelle 28.2: Methoden für Focus-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006002"></a>
+<h4><a name="ixa101848">Key-Ereignisse</a></h4>
+<a name="tableid028003"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101849"><a href="index_k.html#ixb101412"><font color=#000080><tt>KeyEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101850"><a href="index_k.html#ixb101437"><font color=#000080><tt>KeyListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101851"><a href="index_a.html#ixb101362"><font color=#000080><tt>addKeyListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.3: Key-Ereignisse </i></p>
+<a name="tableid028004"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101852"><a href="index_k.html#ixb101438"><font color=#000080><tt>keyPressed</tt></font></a></a></td>
+<td valign=top align=left>Eine Taste wurde gedrückt. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101853"><a href="index_k.html#ixb101439"><font color=#000080><tt>keyReleased</tt></font></a></a></td>
+<td valign=top align=left>Eine Taste wurde losgelassen. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101854"><a href="index_k.html#ixb101440"><font color=#000080><tt>keyTyped</tt></font></a></a></td>
+<td valign=top align=left>Eine Taste wurde gedrückt und wieder
+losgelassen. </td></tr>
+</table>
+<p><i>
+Tabelle 28.4: Methoden für Key-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006003"></a>
+<h4><a name="ixa101855">Mouse-Ereignisse</a></h4>
+<a name="tableid028005"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101856"><a href="index_m.html#ixb101408"><font color=#000080><tt>MouseEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101857"><a href="index_m.html#ixb101416"><font color=#000080><tt>MouseListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101858"><a href="index_a.html#ixb101422"><font color=#000080><tt>addMouseListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.5: Mouse-Ereignisse </i></p>
+<a name="tableid028006"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101859"><a href="index_m.html#ixb101417"><font color=#000080><tt>mouseClicked</tt></font></a></a></td>
+<td valign=top align=left>Eine Maustaste wurde gedrückt und wieder
+losgelassen. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101860"><a href="index_m.html#ixb101418"><font color=#000080><tt>mouseEntered</tt></font></a></a></td>
+<td valign=top align=left>Der Mauszeiger betritt die Komponente. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101861"><a href="index_m.html#ixb101419"><font color=#000080><tt>mouseExited</tt></font></a></a></td>
+<td valign=top align=left>Der Mauszeiger verläßt die Komponente.
+</td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101862"><a href="index_m.html#ixb101420"><font color=#000080><tt>mousePressed</tt></font></a></a></td>
+<td valign=top align=left>Eine Maustaste wurde gedrückt. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101863"><a href="index_m.html#ixb101421"><font color=#000080><tt>mouseReleased</tt></font></a></a></td>
+<td valign=top align=left>Eine Maustaste wurde losgelassen. </td></tr>
+</table>
+<p><i>
+Tabelle 28.6: Methoden für Mouse-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006004"></a>
+<h4><a name="ixa101864">MouseMotion-Ereignisse</a></h4>
+<a name="tableid028007"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101865"><a href="index_m.html#ixb101408"><font color=#000080><tt>MouseEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101866"><a href="index_m.html#ixb101443"><font color=#000080><tt>MouseMotionListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101867"><a href="index_a.html#ixb101444"><font color=#000080><tt>addMouseMotionListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.7: MouseMotion-Ereignisse </i></p>
+<a name="tableid028008"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101868"><a href="index_m.html#ixb101445"><font color=#000080><tt>mouseDragged</tt></font></a></a></td>
+<td valign=top align=left>Die Maus wurde bei gedrückter Taste
+bewegt. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101869"><a href="index_m.html#ixb101446"><font color=#000080><tt>mouseMoved</tt></font></a></a></td>
+<td valign=top align=left>Die Maus wurde bewegt, ohne dass eine Taste
+gedrückt wurde. </td></tr>
+</table>
+<p><i>
+Tabelle 28.8: Methoden für MouseMotion-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006005"></a>
+<h4><a name="ixa101870">Component-Ereignisse</a></h4>
+<a name="tableid028009"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101871"><a href="index_c.html#ixb101403"><font color=#000080><tt>ComponentEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101872"><a href="index_c.html#ixb101448"><font color=#000080><tt>ComponentListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101873"><a href="index_a.html#ixb101449"><font color=#000080><tt>addComponentListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.9: Komponenten-Ereignisse </i></p>
+<a name="tableid028010"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101874"><a href="index_c.html#ixb101450"><font color=#000080><tt>componentHidden</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente wurde unsichtbar. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101875"><a href="index_c.html#ixb101451"><font color=#000080><tt>componentMoved</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente wurde verschoben. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101876"><a href="index_c.html#ixb101452"><font color=#000080><tt>componentResized</tt></font></a></a></td>
+<td valign=top align=left>Die Größe einer Komponente hat
+sich geändert. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101877"><a href="index_c.html#ixb101453"><font color=#000080><tt>componentShown</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente wurde sichtbar. </td></tr>
+</table>
+<p><i>
+Tabelle 28.10: Methoden für Komponenten-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006006"></a>
+<h4><a name="ixa101878">Container-Ereignisse</a></h4>
+<a name="tableid028011"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101879"><a href="index_c.html#ixb101455"><font color=#000080><tt>ContainerEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101880"><a href="index_c.html#ixb101456"><font color=#000080><tt>ContainerListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101881"><a href="index_a.html#ixb101457"><font color=#000080><tt>addContainerListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.11: Container-Ereignisse </i></p>
+<a name="tableid028012"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101882"><a href="index_c.html#ixb101458"><font color=#000080><tt>componentAdded</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente wurde hinzugefügt.
+</td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101883"><a href="index_c.html#ixb101459"><font color=#000080><tt>componentRemoved</tt></font></a></a></td>
+<td valign=top align=left>Eine Komponente wurde entfernt. </td></tr>
+</table>
+<p><i>
+Tabelle 28.12: Methoden für Container-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006007"></a>
+<h4><a name="ixa101884">Window-Ereignisse</a></h4>
+<a name="tableid028013"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101885"><a href="index_w.html#ixb101461"><font color=#000080><tt>WindowEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101886"><a href="index_w.html#ixb101155"><font color=#000080><tt>WindowListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101887"><a href="index_a.html#ixb101157"><font color=#000080><tt>addWindowListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_d.html#ixb101145"><font color=#000080><tt>Dialog</tt></font></a>,
+<a href="index_f.html#ixb101144"><font color=#000080><tt>Frame</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.13: Window-Ereignisse </i></p>
+<a name="tableid028014"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101888"><a href="index_w.html#ixb101462"><font color=#000080><tt>windowActivated</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wurde aktiviert. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101889"><a href="index_w.html#ixb101463"><font color=#000080><tt>windowClosed</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wurde geschlossen. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101890"><a href="index_w.html#ixb101156"><font color=#000080><tt>windowClosing</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wird geschlossen. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101891"><a href="index_w.html#ixb101464"><font color=#000080><tt>windowDeactivated</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wurde deaktiviert. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101892"><a href="index_w.html#ixb101465"><font color=#000080><tt>windowDeiconified</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wurde wiederhergestellt. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101893"><a href="index_w.html#ixb101466"><font color=#000080><tt>windowIconified</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wurde auf Symbolgröße
+verkleinert. </td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101894"><a href="index_w.html#ixb101467"><font color=#000080><tt>windowOpened</tt></font></a></a></td>
+<td valign=top align=left>Das Fenster wurde geöffnet. </td></tr>
+</table>
+<p><i>
+Tabelle 28.14: Methoden für Window-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006008"></a>
+<h4><a name="ixa101895">Action-Ereignisse</a></h4>
+<a name="tableid028015"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101896"><a href="index_a.html#ixb101404"><font color=#000080><tt>ActionEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101897"><a href="index_a.html#ixb101469"><font color=#000080><tt>ActionListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101898"><a href="index_a.html#ixb101470"><font color=#000080><tt>addActionListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_b.html#ixb101471"><font color=#000080><tt>Button</tt></font></a>,
+<a href="index_l.html#ixb100717"><font color=#000080><tt>List</tt></font></a>,
+<a href="index_m.html#ixb101472"><font color=#000080><tt>MenuItem</tt></font></a>,
+<a href="index_t.html#ixb101473"><font color=#000080><tt>TextField</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.15: Action-Ereignisse </i></p>
+<a name="tableid028016"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101899"><a href="index_a.html#ixb101474"><font color=#000080><tt>actionPerformed</tt></font></a></a></td>
+<td valign=top align=left>Eine Aktion wurde ausgelöst. </td></tr>
+</table>
+<p><i>
+Tabelle 28.16: Methoden für Action-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006009"></a>
+<h4><a name="ixa101900">Adjustment-Ereignisse</a></h4>
+<a name="tableid028017"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101901"><a href="index_a.html#ixb101405"><font color=#000080><tt>AdjustmentEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101902"><a href="index_a.html#ixb101476"><font color=#000080><tt>AdjustmentListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101903"><a href="index_a.html#ixb101477"><font color=#000080><tt>addAdjustmentListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_s.html#ixb101478"><font color=#000080><tt>Scrollbar</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.17: Adjustment-Ereignisse </i></p>
+<a name="tableid028018"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101904"><a href="index_a.html#ixb101479"><font color=#000080><tt>adjustmentValueChanged</tt></font></a></a></td>
+<td valign=top align=left>Der Wert wurde verändert. </td></tr>
+</table>
+<p><i>
+Tabelle 28.18: Methoden für Adjustment-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006010"></a>
+<h4><a name="ixa101905">Item-Ereignisse</a></h4>
+<a name="tableid028019"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101906"><a href="index_i.html#ixb101406"><font color=#000080><tt>ItemEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101907"><a href="index_i.html#ixb101481"><font color=#000080><tt>ItemListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101908"><a href="index_a.html#ixb101482"><font color=#000080><tt>addItemListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_c.html#ixb101483"><font color=#000080><tt>Checkbox</tt></font></a>,
+<a href="index_c.html#ixb101484"><font color=#000080><tt>Choice</tt></font></a>,
+<a href="index_l.html#ixb100717"><font color=#000080><tt>List</tt></font></a>,
+<a href="index_c.html#ixb101485"><font color=#000080><tt>CheckboxMenuItem</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.19: Item-Ereignisse </i></p>
+<a name="tableid028020"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101909"><a href="index_i.html#ixb101486"><font color=#000080><tt>itemStateChanged</tt></font></a></a></td>
+<td valign=top align=left>Der Zustand hat sich verändert. </td></tr>
+</table>
+<p><i>
+Tabelle 28.20: Methoden für Item-Ereignisse </i></p>
+
+
+<!-- Section -->
+<a name="sectlevel4id028001006011"></a>
+<h4>Text-Ereignisse </h4>
+<a name="tableid028021"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=50%><b>Eigenschaft</b></td>
+<td valign=top align=left width=50%><b>Klasse, Interface oder Methode
+</b></td></tr>
+<tr>
+<td valign=top align=left>Ereignisklasse</td>
+<td valign=top align=left><a name="ixa101910"><a href="index_t.html#ixb101407"><font color=#000080><tt>TextEvent</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Listener-Interface</td>
+<td valign=top align=left><a name="ixa101911"><a href="index_t.html#ixb101487"><font color=#000080><tt>TextListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Registrierungsmethode</td>
+<td valign=top align=left><a name="ixa101912"><a href="index_a.html#ixb101488"><font color=#000080><tt>addTextListener</tt></font></a></a>
+</td></tr>
+<tr>
+<td valign=top align=left>Mögliche Ereignisquellen</td>
+<td valign=top align=left><a href="index_t.html#ixb101473"><font color=#000080><tt>TextField</tt></font></a>,
+<a href="index_t.html#ixb101489"><font color=#000080><tt>TextArea</tt></font></a>
+</td></tr>
+</table>
+<p><i>
+Tabelle 28.21: Text-Ereignisse </i></p>
+<a name="tableid028022"></a>
+<p>
+<table cols=2 border width=100%>
+
+<tr>
+<td valign=top align=left width=40%><b>Ereignismethode</b></td>
+<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
+<tr>
+<td valign=top align=left><a name="ixa101913"><a href="index_t.html#ixb101490"><font color=#000080><tt>textValueChanged</tt></font></a></a></td>
+<td valign=top align=left>Der Text wurde verändert. </td></tr>
+</table>
+<p><i>
+Tabelle 28.22: Methoden für Text-Ereignisse </i></p>
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100180.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100180.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100182.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100184.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
