summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100216.html
blob: 34a15dc1fdbb063ff12ed729706581a7e2b4acda (plain)
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">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100206.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100215.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100217.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</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&ouml;&szlig;e ver&auml;nderlich ist. Der interne Wert eines Schiebereglers
und die Anzeigeposition seines Schiebers sind untrennbar miteinander
verbunden. &Auml;ndert der Anwender die Position des Schiebers, &auml;ndert
sich automatisch auch sein interner Wert. Wird vom Programm der Wert
ver&auml;ndert, f&uuml;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&auml;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&ouml;&szlig;e</i> des Schiebers zu bestimmen.
Diese muss kleiner als der Wertebereich des Schiebereglers sein. Die
Seitengr&ouml;&szlig;e bestimmt einerseits die visuelle Gr&ouml;&szlig;e
des Schiebers und andererseits die Gr&ouml;&szlig;e der Ver&auml;nderung
des Wertes, wenn der Anwender auf die Schaltfl&auml;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&ouml;&szlig;e des Schiebers. Zus&auml;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&auml;rke der Ver&auml;nderung
des Wertes beim Klicken auf die Buttons bzw. die Schaltfl&auml;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&auml;nger. Diese m&uuml;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&uuml;hrt im Ereignisempf&auml;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>
&uuml;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&ouml;sende Scrollbar, mit letzterer
der aktuelle Wert des Schiebereglers bestimmt werden. Zus&auml;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&uuml;ber gibt, welche Benutzeraktion zur Ausl&ouml;sung
des Ereignisses f&uuml;hrte. <a href="k100216.html#schiebekonstanten">Tabelle 32.1</a>
listet die m&ouml;glichen Konstanten auf, die von <a href="index_g.html#ixb101695"><font color=#000080><tt>getAdjustmentType</tt></font></a>
zur&uuml;ckgegeben werden k&ouml;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&ouml;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&auml;che
zwischen Button und Schieber um eine Seite erh&ouml;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&auml;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&auml;ndert. </td></tr>
</table>
<p><i>
Tabelle 32.1: Konstanten f&uuml;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&ouml;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">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</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">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100215.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100217.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>