Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

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 Go to all tips in Java Lessons by Jon Huhtala


Bookmark and Share
All Java Lessons contents page | Java Lesson 1 | Java Lesson 2 | Java Lesson 3 | Java Lesson 4 | Java Lesson 5 | Java Lesson 6 | Java Lesson 7 | Java Lesson 8 | Java Lesson 9 | Java Lesson 10 | Java Lesson 11 | Java Lesson 12 | Java Lesson 13 | Java Lesson 14 | Java Lesson 15 | Java Lesson 16 | Java Lesson 17 | Java Lesson 18 | Java Lesson 19 | Java Lesson 20 | Java Lesson 21 | Java Lesson 22 | Java Lesson 23 | Java Lesson 24 | Java Lesson 25 | Java Lesson 26 | Java Lesson 27 | Java Lesson 28 | Java Lesson 29 | Java Lesson 30 | Java Lesson 31 | Java Lesson 32 | Java Lesson 33 | Java Lesson 34 | Java Lesson 35 | Java Lesson 36 | Java Lesson 37 | Java Lesson 38 | Java Lesson 39 | Java Lesson 40 | Java Lesson 41 | Java Lesson 42 | Java Lesson 43 | Java Lesson 44 | Java Lesson 45 | Java Lesson 46

Java Lesson 32 by Jon Huhtala: Using the Scrollbar graphical control

The Scrollbar class

  • Is part of the java.awt package

  • Is an extension of the Component class

Object

Component

Scrollbar

  • Creates a graphical "slide" with a movable "thumb" the user can adjust to select from a range of values. The application can cause some processing to be performed when the thumb is moved by

  1. Implementing the AdjustmentListener interface

  2. Registering an AdjustmentListener by calling the scrollbar's addAdjustmentListener() method

  3. 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.

  • Has several constructors. The most commonly used is shown by

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.

  • Contains fields to help specify the orientation of the scrollbar. These are:

Field

Usage

HORIZONTAL

Indicates a horizontal scrollbar

VERTICAL

Indicates a vertical scrollbar

  • Has a number of useful methods as follows:

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:

  1. The class implements the AdjustmentListener interface in order to become a registered AdjustmentListener

  2. 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.

  3. 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.

  4. 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.

  5. 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

  1. 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)

  1. the maximum value returned by its getValue() method will be 255

  1. the maximum value returned by its getValue() method will be 275

  2. it would display better in the NORTH or SOUTH of a frame having a BorderLayout than in the frame's EAST or WEST

  3. it would display better in the EAST or WEST of a frame having a BorderLayout than in the frame's NORTH or SOUTH

  4. it would display equally well in any location of a frame having a BorderLayout

  1. What kind of event or events can be fired by a Scrollbar obect?

  1. ActionEvent only

  1. ActionEvent and AdjustmentEvent

  2. AdjustmentEvent only

  3. WindowEvent and AdjustmentEvent

  4. ActionEvent, WindowEvent, and AdjustmentEvent

  1. Code the method header of a method to process a scrollbar event.

  1. 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());
  1. a compile error will occur at line 1

  2. a compile error will occur at line 2

  3. a runtime error will occur

  4. a vertical scrollbar with a minimum value of 1

  5. a vertical scrollbar with a minimum value of 10


 Printer Friendly Page  Printer Friendly Page
 Send to a Friend  Send to a Friend

.. Bookmark and Share

Search here again if you need more info!
Custom Search



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy