|
|
|
1000 Java Tips ebook
|
|
 

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java
programming articles and tips. Please take your copy here.
Take your copy of free "Java Technology Screensaver"!. |
|
The Java Lesson 32: Using the Scrollbar graphical control
|
JavaFAQ Home » Java Lessons by Jon Huhtala

Java Lesson 32 by
Jon Huhtala: Using the Scrollbar graphical control
The Scrollbar
class
|
Object |
|
|
|
|
|
|
|
Component |
|
|
|
|
|
|
Scrollbar |
-
Implementing the AdjustmentListener interface
-
Registering an AdjustmentListener by calling
the scrollbar's addAdjustmentListener() method
-
Coding an adjustmentValueChanged() method within the
registered AdjustmentListener that defines the processing to be
performed
When the user moves the thumb, an AdjustmentEvent will be fired to the adjustmentValueChanged() method
of the registered AdjustmentListener for processing.
Scrollbar myBar = new
Scrollbar(Scrollbar.VERTICAL,15,10,1,100);
which creates a vertical
scrollbar with an initial value of 15,
a thumb width of 10, a minimum value of
1, and a stated maximum value of 100. The actual maximum value is 90 (stated maximum value - thumb width).
The block increment (how far to
move the thumb when the user clicks on either side of it within the scrollbar)
defaults to 10.
|
Field |
Usage |
|
HORIZONTAL |
Indicates a horizontal
scrollbar |
|
VERTICAL |
Indicates a vertical
scrollbar |
|
Method |
Usage |
|
addAdjustmentListener() |
Adds the specified AdjustmentListener to
receive AdjustmentEvent objects from this scrollbar |
|
getBlockIncrement() |
Gets the block increment of
this scrollbar |
|
getMaximum() |
Gets the maximum value of this
scrollbar |
|
getMinimum() |
Gets the minimum value of this
scrollbar |
|
getValue() |
Gets the current value (thumb position) of
this scrollbar |
|
getVisibleAmount() |
Gets the current visible amount (thumb
size) of this scrollbar |
|
removeAdjustmentListener() |
Removes the specified AdjustmentListener so
it no longer receives AdjustmentEvent objects from this scrollbar |
|
setBlockIncrement() |
Sets the block increment of
this scrollbar |
|
setMaximum() |
Sets the maximum value of this
scrollbar |
|
setMinimum() |
Sets the minimum value of this
scrollbar |
|
setValue() |
Sets the current value (thumb position) of
this scrollbar |
|
setVisibleAmount() |
Sets the current visible amount (thumb
size) of this
scrollbar |
Consult the help facility of your Java development environment or the Java
API for more details.
Example:
import
java.awt.*; import java.awt.event.*;
public class App extends
Frame implements WindowListener, AdjustmentListener
{
class Bubble extends Canvas { private
int width; private int height;
public Bubble(int iWidth, int iHeight) {
width = iWidth; height =
iHeight; } public void
setWidth(int newWidth) { width =
newWidth; } public void
setHeight(int newHeight) { height =
newHeight; } public void
paint(Graphics g) {
g.setColor(Color.pink);
g.fillOval(0,0,width,height); }
}
Bubble bubble; Scrollbar wBar; Scrollbar
hBar; Label size;
public static void main(String[]
args) { App myWindow = new App("Stretch the
bubble");
myWindow.setSize(330,370);
myWindow.setVisible(true); }
public App(String
title) { super(title);
setLayout(new BorderLayout());
addWindowListener(this); int sWidth =
50; int sHeight = 150; bubble =
new Bubble(sWidth,sHeight);
bubble.setBackground(Color.white);
add(bubble); wBar = new
Scrollbar(Scrollbar.HORIZONTAL,sWidth,20,1,320);
wBar.setBlockIncrement(wBar.getVisibleAmount());
wBar.addAdjustmentListener(this); add(wBar,
BorderLayout.NORTH); hBar = new
Scrollbar(Scrollbar.VERTICAL,sHeight,20,1,320);
hBar.setBlockIncrement(hBar.getVisibleAmount());
hBar.addAdjustmentListener(this); add(hBar,
BorderLayout.EAST); size = new Label("width = " +
sWidth + ", height = " + sHeight);
size.setBackground(Color.lightGray);
size.setAlignment(Label.CENTER);
add(size,BorderLayout.SOUTH); }
public void
adjustmentValueChanged(AdjustmentEvent e) { if
(e.getSource().equals(wBar)) {
bubble.setWidth(wBar.getValue());
} if (e.getSource().equals(hBar))
{
bubble.setHeight(hBar.getValue());
} bubble.repaint();
size.setText("width = " + wBar.getValue()
+ ", height = " +
hBar.getValue()); }
public void
windowClosing(WindowEvent e) {
dispose(); System.exit(0); }
public void windowOpened(WindowEvent e) {} public void
windowActivated(WindowEvent e) {} public void
windowIconified(WindowEvent e) {} public void
windowDeiconified(WindowEvent e) {} public void
windowDeactivated(WindowEvent e) {} public void
windowClosed(WindowEvent e) {} }
Notes:
-
The class implements the
AdjustmentListener
interface in order to become a registered AdjustmentListener
-
Inner class Bubble extends Canvas to render a filled,
pink oval of a certain width and height. Its constructor receives the
bubble's initial width and height as parameters. The setWidth() and setHeight() methods can be
called to change the bubble's width and height respectively. The paint() method overrides the
inherited paint()
method of the Component
class to draw the bubble in the current width and height whenever it needs
to be rendered.
-
The application class has
instance variables for referencing a Bubble object (bubble), scrollbars for changing the bubble's width and height
(wBar and hBar), and a label (size) for displaying the
current bubble size.
-
In the application's
constructor, the bubble is instantiated and added to the CENTER of the application frame. The width
scrollbar (wBar) is
then instantiated, its block increment is set to be the same as its "thumb"
size, its AdjustmentListener registered, and it is added to the NORTH region of the application frame. This
is followed by the instantiation of the height scrollbar (hBar), the setting of its
block increment, the registering of its AdjustmentListener registered, and adding it to
the EAST region of the application
frame. Finally, the size label is instantiated to display the initial width
and height of the bubble and added to the SOUTH of the application frame.
-
The adjustmentValueChanged() method is required by
the AdjustmentListener
interface. It receives an AdjustmentEvent object as a parameter and is automatically
called when the user moves the thumb within a scrollbar. In this sample, the
method determines which scrollbar was adjusted. If the user adjusted wBar, the current value of
wBar is passed to the
bubble's setWidth()
method. If the user adjusted hBar, the current value of hBar is passed to the bubble's setHeight() method. In either
case, the bubble is repainted and the size label's text changed to indicate
the bubble's new width and height.
Lab exercise for Ferris
students
E-mail your answers to this
assignment no later than
the due date listed in the class schedule.
Review questions
-
A scrollbar is instantiated
as follows. Which of the statements below will be true of the scrollbar?
(choose two)
new Scrollbar(Scrollbar.HORIZONTAL,25,20,15,275)
-
the maximum value returned
by its getValue() method will be
255
-
the maximum value returned
by its getValue() method will be
275
-
it would display better in
the NORTH or SOUTH of a frame having a BorderLayout than in the frame's EAST or WEST
-
it would display better in
the EAST or WEST of a frame having a BorderLayout than in the frame's NORTH or SOUTH
-
it would display equally
well in any location of a frame having a BorderLayout
-
What kind of event or events
can be fired by a Scrollbar obect?
-
ActionEvent only
-
ActionEvent and AdjustmentEvent
-
AdjustmentEvent only
-
WindowEvent and AdjustmentEvent
-
ActionEvent, WindowEvent, and AdjustmentEvent
-
Code the method header of a
method to process a scrollbar event.
-
Assuming that all unseen
code is correct and that line numbers are for reference purposes only, what
will result from an attempt to compile and execute the following code?
1 2 |
Scrollbar x = new
Scrollbar(VERTICAL,10,20,1,50); x.setMinimum(x.getValue()); |
-
a compile error will occur
at line 1
-
a compile error will occur
at line 2
-
a runtime error will occur
-
a vertical scrollbar with
a minimum value of 1
-
a vertical scrollbar with
a minimum value of 10
Printer Friendly Page
Send to a Friend
..
Search here again if you need more info!
|
|
|