1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
<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,k100173.html;106,k100173.html;107,k100175.html;108,k100180.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="k100173.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100173.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100175.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100180.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 27 - Fenster
</table>
<hr>
<!-- Section -->
<a name="sectlevel2id027001"></a>
<h2>27.1 Die verschiedenen <a name="ixa101750">Fensterklassen</a>
</h2>
<hr>
<ul>
<li><a href="k100174.html#sectlevel2id027001">27.1 Die verschiedenen Fensterklassen</a>
</ul>
<hr>
<p>
Das Abstract Windowing Toolkit von Java enthält verschiedene
Fensterklassen, die über eine gemeinsame Vererbungshierarchie
miteinander in Verbindung stehen (siehe <a href="k100174.html#hierarchiefensterklassen">Abbildung 27.1</a>).
Oberste Fensterklasse ist <a name="ixa101751"><a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a></a>,
daraus wurde <a name="ixa101752"><a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a></a>
abgeleitet. <a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>
ist die Oberklasse der beiden Klassen <a name="ixa101753"><a href="index_w.html#ixb101146"><font color=#000080><tt>Window</tt></font></a></a>
und <a name="ixa101754"><a href="index_p.html#ixb101354"><font color=#000080><tt>Panel</tt></font></a></a>.
Während <a href="index_w.html#ixb101146"><font color=#000080><tt>Window</tt></font></a>
sich in die Unterklassen <a name="ixa101755"><a href="index_f.html#ixb101144"><font color=#000080><tt>Frame</tt></font></a></a>
und <a name="ixa101756"><a href="index_d.html#ixb101145"><font color=#000080><tt>Dialog</tt></font></a></a>
verzweigt, wird aus <a href="index_p.html#ixb101354"><font color=#000080><tt>Panel</tt></font></a>
die Klasse <a name="ixa101757"><a href="index_a.html#ixb100588"><font color=#000080><tt>Applet</tt></font></a></a>
abgeleitet. Unterhalb von <a href="index_d.html#ixb101145"><font color=#000080><tt>Dialog</tt></font></a>
gibt es noch den Standard-File-Dialog in der Klasse <a name="ixa101758"><a href="index_f.html#ixb101355"><font color=#000080><tt>FileDialog</tt></font></a></a>.
<p>
<a name="hierarchiefensterklassen"></a>
<img src="images/VererbAWTFenster.gif">
<p>
<p><i>
Abbildung 27.1: Hierarchie der Fensterklassen</i></p>
<p>
<a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
ist eine abstrakte Klasse, deren Aufgabe darin besteht, ein Programmelement
zu repräsentieren, das eine Größe und Position hat
und das in der Lage ist, eine Vielzahl von Ereignissen zu senden und
auf diese zu reagieren. In den folgenden Abschnitten werden wir einige
ihrer Eigenschaften vorstellen.
<p>
<a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>
ist ebenfalls eine abstrakte Klasse. Sie ist dafür zuständig,
innerhalb einer Komponente andere Komponenten aufzunehmen. <a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>
stellt Methoden zur Verfügung, um Komponenten hinzuzufügen
oder sie zu entfernen, und realisiert in Zusammenarbeit mit den <font color="#000077"><tt>LayoutManager</tt></font>-Klassen
die Positionierung und Anordnung der Komponenten. <a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>
und <a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
bilden zusammen ein Composite-Pattern, wie es in <a href="k100068.html#compositepattern">Abschnitt 10.4.7</a>
beschrieben wurde. Weitere Informationen zur Klasse <a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>
finden sich in <a href="k100202.html#dialogerstellen">Abschnitt 31.1</a>
bei der Beschreibung von Dialogen und Layoutmanagern.
<p>
<a href="index_p.html#ixb101354"><font color=#000080><tt>Panel</tt></font></a>
ist die einfachste konkrete Klasse mit den Eigenschaften von <a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
und <a href="index_c.html#ixb101353"><font color=#000080><tt>Container</tt></font></a>.
Sie wird verwendet, um eine Sammlung von Dialogelementen mit einem
vorgegebenen Layout zu definieren und wiederverwendbar zu machen.
Nützlich ist die Klasse auch beim Layouten von Dialogen, weil
sie es ermöglicht, Teildialoge zu schachteln und mit eigenen
Layoutmanagern zu versehen. Wir werden auf die Verwendung der Klasse
<a href="index_p.html#ixb101354"><font color=#000080><tt>Panel</tt></font></a>
in <a href="k100201.html#kapitelguidialoge">Kapitel 31</a> bei der
Beschreibung von Benutzerdialogen zurückkommen.
<p>
Die für die Entwicklung von Applets wichtige Klasse <a href="index_a.html#ixb100588"><font color=#000080><tt>Applet</tt></font></a>
ist eine direkte Unterklasse von <a href="index_p.html#ixb101354"><font color=#000080><tt>Panel</tt></font></a>.
Sie erweitert zwar die Funktionalität der Klasse <a href="index_p.html#ixb101354"><font color=#000080><tt>Panel</tt></font></a>
um Methoden, die für das Ausführen von Applets von Bedeutung
sind, bleibt aber letzlich ein Programmelement, das eine Größe
und Position hat, auf Ereignisse reagieren kann und in der Lage ist,
weitere Komponenten aufzunehmen. Einerseits ist es bemerkenswert,
dass eine Klasse wie <a href="index_a.html#ixb100588"><font color=#000080><tt>Applet</tt></font></a>,
die für eine riesige Zahl von Anwendungen von elementarer Bedeutung
ist, ganz unten in der Vererbungskette eines stark spezialisierten
Zweigs der Klassenhierarchie steht. Andererseits liefert die Klasse
<a href="index_a.html#ixb100588"><font color=#000080><tt>Applet</tt></font></a>
jedoch mit der vorstehenden Beschreibung eine nahezu perfekte Charakterisierung
von Applets. Wir werden in <a href="k100248.html#kapitelapplets1">Kapitel 39</a>
auf die Eigenschaften dieser Klasse näher eingehen.
<p>
Die Klasse <a href="index_w.html#ixb101146"><font color=#000080><tt>Window</tt></font></a>
abstrahiert ein Top-Level-Window ohne Rahmen, Titelleiste und Menü.
Sie ist für Anwendungen geeignet, die ihre Rahmenelemente selbst
zeichnen oder die volle Kontrolle über das gesamte Fenster benötigen.
<p>
Die Klasse <a href="index_f.html#ixb101144"><font color=#000080><tt>Frame</tt></font></a>
repräsentiert ein Top-Level-Window mit Rahmen, Titelleiste und
optionalem Menü. Einem <a href="index_f.html#ixb101144"><font color=#000080><tt>Frame</tt></font></a>
kann ein Icon zugeordnet werden, das angezeigt wird, wenn das Fenster
minimiert wird. Es kann eingestellt werden, ob das Fenster vom Anwender
in der Größe verändert werden kann. Zusätzlich
besteht die Möglichkeit, das Aussehen des Mauszeigers zu verändern.
<p>
Die zweite aus <a href="index_w.html#ixb101146"><font color=#000080><tt>Window</tt></font></a>
abgeleitete Klasse ist <a href="index_d.html#ixb101145"><font color=#000080><tt>Dialog</tt></font></a>.
Sie ist dafür vorgesehen, modale oder nicht-modale Dialoge zu
realisieren. Ein modaler Dialog ist ein Fenster, das immer im Vordergrund
des Fensters bleibt, von dem es erzeugt wurde, und das alle übrigen
Fensteraktivitäten und Ereignisse so lange blockiert, bis es
geschlossen wird. Ein nicht-modaler Dialog kann mit anderen Fenstern
koexistieren und erlaubt es, im aufrufenden Fenster weiterzuarbeiten.
<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>
Aufgrund von Bugs in der Windows-Portierung des AWT gab es bis zur
Version 1.0.2 des AWT keine vernünftige Möglichkeit, <i>modale</i>
Dialoge zu erzeugen. Dies war ein ziemlich schwerwiegendes Problem,
denn modale Dialoge kommen in der Programmentwicklung sehr häufig
vor. Sie werden immer dann benötigt, wenn das Programm auf die
Eingabe eines Anwenders warten muss, bevor es fortfahren kann. Leider
funktionierte gerade dieser Wartemechanismus nicht, und es wurden
eine Reihe aufwändiger Workarounds veröffentlicht. Mit der
Version 1.1 des JDK war es erstmals auch unter Windows 95 möglich,
echte modale Dialoge in Java zu erstellen. Wir werden auf die Details
in <a href="k100201.html#kapitelguidialoge">Kapitel 31</a> zurückkommen.</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>
Die unterste Klasse in der Hierarchie der Fenster ist <a href="index_f.html#ixb101355"><font color=#000080><tt>FileDialog</tt></font></a>.
Sie stellt den Standard-Dateidialog des jeweiligen Betriebssystems
zur Verfügung. Dieser kann beim Laden oder Speichern einer Datei
zur Eingabe oder Auswahl eines Dateinamens verwendet werden. Gegenüber
den Möglichkeiten des Standard-Dateidialogs, wie er vom Windows-API
zur Verfügung gestellt wird, sind die Fähigkeiten der Klasse
<a href="index_f.html#ixb101355"><font color=#000080><tt>FileDialog</tt></font></a>
allerdings etwas eingeschränkt.
<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="k100173.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100173.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100175.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100180.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>
|