List
s, TextArea
s, and
ScrollPane
s come with ready made scrollbars. However if you
want to scroll any other object you'll have to use a
java.awt.Scrollbar
. Scrollbars have many uses. At their most
basic they're used for moving the visible area. They can also be
used to set a value between two numbers. Or they can be used to
flip through a number of screens as in a database operation that
looks at successive records.
There are three constructors:
public Scrollbar()
public Scrollbar(int orientation)
public Scrollbar(int orientation, int value, int visible, int min, int max)
The orientation
argument is one of the mnemonic
constants, Scrollbar.HORIZONTAL
or
Scrollbar.VERTICAL
. As you expect this determines whether
the Scrollbar
is laid out from left to right or top to
bottom.
A Scrollbar
has an int
value at all
times. This value will be between the minimum
and the
maximum
value set by the last two arguments to the
constructor. When a Scrollbar
is created, its value is
given by the value
argument. The default is 0.
Finally visible
represents the size of the visible
portion of the scrollable area in pixels. The
Scrollbar
uses this when moving up or down a page.
A Scrollbar
fires an adjustment event when its
value changes. You register an adjustment listener to catch this
event. This class needs an adjustmentValueChanged()
method with this signature:
public void adjustmentValueChanged(AdjustmentEvent
e)
The following program is an applet that changes the number in a
TextField
between 1 and 100 based on the position of
the thumb (the movable part of the Scrollbar
). In a
practical application the number would of course mean
something.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Scrollie extends Applet implements AdjustmentListener {
private TextField t;
private Scrollbar sb;
public void init() {
int initialValue = 1;
sb = new Scrollbar(Scrollbar.HORIZONTAL, initialValue, 100, 1, 100);
sb.addAdjustmentListener(this);
this.add(sb);
this.t = new TextField(4);
this.t.setText(String.valueOf(initialValue));
this.add(t);
}
public void adjustmentValueChanged(AdjustmentEvent e)
int val = sb.getValue();
this.t.setText(String.valueOf(val));
}
}