java.awt.Scrollbar
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 {
TextField t;
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));
}
}