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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
|
<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,k100206.html;106,k100215.html;107,k100217.html;108,k100219.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="k100206.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100215.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100217.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.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 32 - AWT-Dialogelemente
</table>
<hr>
<!-- Section -->
<a name="scrollbar"></a>
<h2>32.10 Scrollbar </h2>
<hr>
<ul>
<li><a href="k100216.html#scrollbar">32.10 Scrollbar</a>
</ul>
<hr>
<p>
Ein <a name="ixa102250"><a href="index_s.html#ixb101478"><font color=#000080><tt>Scrollbar</tt></font></a></a>
ist ein <a name="ixa102251">Schieberegler</a>, der zur quasianalogen
Anzeige und Eingabe eines Wertes aus einem vorgegebenen Wertebereich
verwendet werden kann. Der Schieberegler kann entweder horizontal
oder vertikal angeordnet werden und besitzt einen Schieber, dessen
Größe veränderlich ist. Der interne Wert eines Schiebereglers
und die Anzeigeposition seines Schiebers sind untrennbar miteinander
verbunden. Ändert der Anwender die Position des Schiebers, ändert
sich automatisch auch sein interner Wert. Wird vom Programm der Wert
verändert, führt dies auch zu einer Repositionierung des
Schiebers.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public Scrollbar()
public Scrollbar(int orientation)
public Scrollbar(
int orientation, int value, int visible,
int minimum, int maximum
)
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/awt/Scrollbar.html" onClick="this.href=getApiDoc('java.awt.Scrollbar')"><font color="#660066" size=-1>java.awt.Scrollbar</font></a></td>
</tr>
</table>
<p>
Der parameterlose Konstruktor erzeugt einen vertikalen Schieberegler.
Mit dem Parameter <font color="#000077"><tt>orientation</tt></font>
kann die Orientierung festgelegt werden. Hier kann eine der Konstanten
<a name="ixa102252"><a href="index_h.html#ixb101624"><font color=#000080><tt>Scrollbar.HORIZONTAL</tt></font></a></a>
oder <a name="ixa102253"><a href="index_v.html#ixb101625"><font color=#000080><tt>Scrollbar.VERTICAL</tt></font></a></a>
angegeben werden.
<p>
Der dritte Konstruktor erlaubt die Angabe weiterer Eigenschaften.
<font color="#000077"><tt>minimum</tt></font> und <font color="#000077"><tt>maximum</tt></font>
spezifizieren die Grenzen des repräsentierten Wertebereichs.
Die untere Grenze liegt bei einem vertikalen Schieberegler oben und
bei einem horizontalen Schieberegler auf der linken Seite. Mit <font color="#000077"><tt>value</tt></font>
kann der Anfangswert des Schiebers festgelegt werden.
<p>
Der Parameter <font color="#000077"><tt>visible</tt></font> dient
dazu, die <i>Seitengröße</i> des Schiebers zu bestimmen.
Diese muss kleiner als der Wertebereich des Schiebereglers sein. Die
Seitengröße bestimmt einerseits die visuelle Größe
des Schiebers und andererseits die Größe der Veränderung
des Wertes, wenn der Anwender auf die Schaltfläche zwischen Schieber
und Button des Schiebereglers klickt.
<p>
Die Methoden der Klasse <a href="index_s.html#ixb101478"><font color=#000080><tt>Scrollbar</tt></font></a>
realisieren den Zugriff auf die Attribute des Schiebereglers. Die
meisten von ihnen sind im Interface <a name="ixa102254"><a href="index_a.html#ixb101685"><font color=#000080><tt>Adjustable</tt></font></a></a>
definiert, das von <a href="index_s.html#ixb101478"><font color=#000080><tt>Scrollbar</tt></font></a>
implementiert wird. Mit <a name="ixa102255"><a href="index_g.html#ixb100752"><font color=#000080><tt>getValue</tt></font></a></a>
und <a name="ixa102256"><a href="index_s.html#ixb101686"><font color=#000080><tt>setValue</tt></font></a></a>
wird auf den aktuellen Wert des Schiebers zugegriffen, mit <a name="ixa102257"><a href="index_g.html#ixb101687"><font color=#000080><tt>getMinimum</tt></font></a></a>
und <a name="ixa102258"><a href="index_g.html#ixb101688"><font color=#000080><tt>getMaximum</tt></font></a></a>
auf die Grenzen des Wertebereichs und mit <a name="ixa102259"><a href="index_g.html#ixb101689"><font color=#000080><tt>getVisibleAmount</tt></font></a></a>
auf die Größe des Schiebers. Zusätzlich kann mit <a name="ixa102260"><a href="index_g.html#ixb101690"><font color=#000080><tt>getUnitIncrement</tt></font></a></a>
und <a name="ixa102261"><a href="index_s.html#ixb101691"><font color=#000080><tt>setUnitIncrement</tt></font></a></a>
sowie mit <a name="ixa102262"><a href="index_g.html#ixb101692"><font color=#000080><tt>getBlockIncrement</tt></font></a></a>
und <a name="ixa102263"><a href="index_s.html#ixb101693"><font color=#000080><tt>setBlockIncrement</tt></font></a></a>
auf die Parameter zugegriffen werden, die die Stärke der Veränderung
des Wertes beim Klicken auf die Buttons bzw. die Schaltfläche
zwischen Schieber und Buttons bestimmen.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public int getValue()
public void setValue(int value)
public int getMinimum()
public int getMaximum()
public int getVisible()
public int getUnitIncrement()
public void setUnitIncrement(int l)
public int getBlockIncrement()
public void setBlockIncrement(int l)
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/awt/Scrollbar.html" onClick="this.href=getApiDoc('java.awt.Scrollbar')"><font color="#660066" size=-1>java.awt.Scrollbar</font></a></td>
</tr>
</table>
<p>
Ein <a href="index_s.html#ixb101478"><font color=#000080><tt>Scrollbar</tt></font></a>
sendet <a name="ixa102264"><i>Adjustment-Ereignisse</i></a> an seine
Ereignisempfänger. Diese müssen das Interface <a name="ixa102265"><a href="index_a.html#ixb101476"><font color=#000080><tt>AdjustmentListener</tt></font></a></a>
implementieren und sich durch Aufruf von <a name="ixa102266"><a href="index_a.html#ixb101477"><font color=#000080><tt>addAdjustmentListener</tt></font></a></a>
registrieren:
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public void addAdjustmentListener(AdjustmentListener l)
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/awt/Scrollbar.html" onClick="this.href=getApiDoc('java.awt.Scrollbar')"><font color="#660066" size=-1>java.awt.Scrollbar</font></a></td>
</tr>
</table>
<p>
Das Adjustment-Ereignis führt im Ereignisempfänger zum Aufruf
der Methode <a name="ixa102267"><a href="index_a.html#ixb101479"><font color=#000080><tt>adjustmentValueChanged</tt></font></a></a>,
die ein <a name="ixa102268"><a href="index_a.html#ixb101405"><font color=#000080><tt>AdjustmentEvent</tt></font></a></a>
übergeben bekommt:
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public abstract void adjustmentValueChanged(AdjustmentEvent e)
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/awt/event/AdjustmentListener.html" onClick="this.href=getApiDoc('java.awt.event.AdjustmentListener')"><font color="#660066" size=-1>java.awt.event.AdjustmentListener</font></a></td>
</tr>
</table>
<p>
Dieses besitzt die Methoden <a name="ixa102269"><a href="index_g.html#ixb101694"><font color=#000080><tt>getAdjustable</tt></font></a></a>
und <a name="ixa102270"><a href="index_g.html#ixb100752"><font color=#000080><tt>getValue</tt></font></a></a>.
Mit der erstgenannten kann der auslösende Scrollbar, mit letzterer
der aktuelle Wert des Schiebereglers bestimmt werden. Zusätzlich
gibt es die Methode <a name="ixa102271"><a href="index_g.html#ixb101695"><font color=#000080><tt>getAdjustmentType</tt></font></a></a>,
die Auskunft darüber gibt, welche Benutzeraktion zur Auslösung
des Ereignisses führte. <a href="k100216.html#schiebekonstanten">Tabelle 32.1</a>
listet die möglichen Konstanten auf, die von <a href="index_g.html#ixb101695"><font color=#000080><tt>getAdjustmentType</tt></font></a>
zurückgegeben werden können, und beschreibt ihre Bedeutung.
<a name="schiebekonstanten"></a>
<p>
<table cols=2 border width=100%>
<tr>
<td valign=top align=left width=40%><b>Konstante</b></td>
<td valign=top align=left width=60%><b>Bedeutung </b></td></tr>
<tr>
<td valign=top align=left><a name="ixa102272"><a href="index_u.html#ixb101696"><font color=#000080><tt>UNIT_INCREMENT</tt></font></a></a></td>
<td valign=top align=left>Der Wert wurde durch Klicken eines Buttons
um eine Einheit erhöht. </td></tr>
<tr>
<td valign=top align=left><a name="ixa102273"><a href="index_u.html#ixb101697"><font color=#000080><tt>UNIT_DECREMENT</tt></font></a></a></td>
<td valign=top align=left>Der Wert wurde durch Klicken eines Buttons
um eine Einheit vermindert. </td></tr>
<tr>
<td valign=top align=left><a name="ixa102274"><a href="index_b.html#ixb101698"><font color=#000080><tt>BLOCK_INCREMENT</tt></font></a></a></td>
<td valign=top align=left>Der Wert wurde durch Klicken der Schaltfläche
zwischen Button und Schieber um eine Seite erhöht. </td></tr>
<tr>
<td valign=top align=left><a name="ixa102275"><a href="index_b.html#ixb101699"><font color=#000080><tt>BLOCK_DECREMENT</tt></font></a></a></td>
<td valign=top align=left>Der Wert wurde durch Klicken der Schaltfläche
zwischen Button und Schieber um eine Seite vermindert. </td></tr>
<tr>
<td valign=top align=left><a name="ixa102276"><a href="index_t.html#ixb101700"><font color=#000080><tt>TRACK</tt></font></a></a></td>
<td valign=top align=left>Der Wert wurde durch Ziehen des Schiebers
verändert. </td></tr>
</table>
<p><i>
Tabelle 32.1: Konstanten für Schieberegler-Ereignisse </i></p>
<p>
Eine beispielhafte Implementierung von <a href="index_a.html#ixb101479"><font color=#000080><tt>adjustmentValueChanged</tt></font></a>
könnte etwa so aussehen:
<a name="listingid032015"></a>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
<tr>
<td valign=top>
<font color="#000055">
<pre>
<font color="#555555">001 </font><font color="#00AA00">/* Scrollbar.inc */</font>
<font color="#555555">002 </font>
<font color="#555555">003 </font><font color="#0000AA">public</font> <font color="#006699">void</font> adjustmentValueChanged(AdjustmentEvent event)
<font color="#555555">004 </font>{
<font color="#555555">005 </font> Adjustable sb = event.getAdjustable();
<font color="#555555">006 </font> <font color="#0000AA">if</font> (sb.getOrientation() == Scrollbar.HORIZONTAL) {
<font color="#555555">007 </font> System.out.print(<font color="#0000FF">"Horizontal: "</font>);
<font color="#555555">008 </font> } <font color="#0000AA">else</font> {
<font color="#555555">009 </font> System.out.print(<font color="#0000FF">"Vertikal: "</font>);
<font color="#555555">010 </font> }
<font color="#555555">011 </font> <font color="#0000AA">switch</font> (event.getAdjustmentType()) {
<font color="#555555">012 </font> <font color="#0000AA">case</font> AdjustmentEvent.UNIT_INCREMENT:
<font color="#555555">013 </font> System.out.println(<font color="#0000FF">"AdjustmentEvent.UNIT_INCREMENT"</font>);
<font color="#555555">014 </font> <font color="#0000AA">break</font>;
<font color="#555555">015 </font> <font color="#0000AA">case</font> AdjustmentEvent.UNIT_DECREMENT:
<font color="#555555">016 </font> System.out.println(<font color="#0000FF">"AdjustmentEvent.UNIT_DECREMENT"</font>);
<font color="#555555">017 </font> <font color="#0000AA">break</font>;
<font color="#555555">018 </font> <font color="#0000AA">case</font> AdjustmentEvent.BLOCK_DECREMENT:
<font color="#555555">019 </font> System.out.println(<font color="#0000FF">"AdjustmentEvent.BLOCK_DECREMENT"</font>);
<font color="#555555">020 </font> <font color="#0000AA">break</font>;
<font color="#555555">021 </font> <font color="#0000AA">case</font> AdjustmentEvent.BLOCK_INCREMENT:
<font color="#555555">022 </font> System.out.println(<font color="#0000FF">"AdjustmentEvent.BLOCK_INCREMENT"</font>);
<font color="#555555">023 </font> <font color="#0000AA">break</font>;
<font color="#555555">024 </font> <font color="#0000AA">case</font> AdjustmentEvent.TRACK:
<font color="#555555">025 </font> System.out.println(<font color="#0000FF">"AdjustmentEvent.TRACK"</font>);
<font color="#555555">026 </font> <font color="#0000AA">break</font>;
<font color="#555555">027 </font> }
<font color="#555555">028 </font> System.out.println(<font color="#0000FF">" value: "</font> + event.getValue());
<font color="#555555">029 </font>}
<font color="#555555">030 </font>
<font color="#555555">031 </font><font color="#0000AA">private</font> <font color="#006699">void</font> customizeLayout(Panel panel)
<font color="#555555">032 </font>{
<font color="#555555">033 </font> panel.setLayout(<font color="#0000AA">new</font> BorderLayout());
<font color="#555555">034 </font> Scrollbar hsb=<font color="#0000AA">new</font> Scrollbar(Scrollbar.HORIZONTAL,1,10,1,100);
<font color="#555555">035 </font> hsb.addAdjustmentListener(<font color="#006699">this</font>);
<font color="#555555">036 </font> panel.add(hsb, BorderLayout.SOUTH);
<font color="#555555">037 </font> Scrollbar vsb=<font color="#0000AA">new</font> Scrollbar(Scrollbar.VERTICAL, 1,10,1,100);
<font color="#555555">038 </font> vsb.addAdjustmentListener(<font color="#006699">this</font>);
<font color="#555555">039 </font> panel.add(vsb, BorderLayout.EAST);
<font color="#555555">040 </font>}</pre>
</font>
</td>
<td valign=top align=right>
<a href="../examples/Scrollbar.inc"><font color="#000055" size=-1>Scrollbar.inc</font></a></td>
</tr>
</table>
<i>
Listing 32.15: Verwendung von Scrollbars</i></p>
<p>
<a name="imageid032010"></a>
<img src="images/Scrollbar.gif">
<p>
<p><i>
Abbildung 32.10: Ein Dialog mit zwei Schiebereglern</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="k100206.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100215.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100217.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.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>
|