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"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 314


Previous 1060 Stories (530 Pages, 2 Per Page) Next

The Java Lesson 32: Using the Scrollbar graphical control

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


12753 bytes more | 2 comments | Printer Friendly Page  Send to a Friend | Score: 5
Posted by jalex on Thursday, March 03, 2005 (00:00:00) (10476 reads)

Java: GUI Overview

Go to all tips in Java Notes by Fred Swartz

A GUI (Graphical User Interface) is easy to create after you have a few basic elements from these groups:

  1. Top-level Containers (eg, JFrame)
  2. Intermediate Containers (eg, JPanel, JMenuBar)
  3. Components (eg, JLabel, JButton, JTextField)
  4. Listeners (eg, ActionListener)
  5. Layouts (eg, FlowLayout, BorderLayout, GridBagLayout)

Top-level Containers are windows (JFrame, JDialog). Each window has two intermediate containers - a menubar which contains the menus, and the content pane which holds the components.

Intermediate Containers (eg, JPanel) contain components. Components are added to the intermediate container. Every container has a layout manager, which specifies how the components are arranged in the container.

Layouts specify how to arrange components in a JPanel (or other intermediate container). Every JPanel starts with a default layout manager, but it's better to set it explicitly.. Use one of Java's layout managers: FlowLayout, BorderLayout, GridLayout, GridBagLayout, BoxLayout, etc.

Components are the user interface controls like buttons (JButton, ...), text boxes (JTextField, JTextArea, ...), menus, etc. These are added to a container with the add() method, and the place they appear on a container is determined by the layout which is used for that container.

Listeners are attached to components and contain the code that is called when the component is used (eg, a button is clicked). This is how a user action on a component (like a click on a JButton or moving a JSlider) is connected to a Java method. As long as you work with components, you never have to use low-level listeners (eg, mouse listeners and key listener) because the components take care of this for you.

Other. The above are essential elements for user interfaces, but others will be useful in some programs. Eg, drawing graphics, animation, mouse, keyboard, sound, ... Good guidance on the appearance can be found in Sun's Java Look and Feel Design Guidelines, which is available on-line for free (java.sun.com/products/jlf/ed2/book/).

Program Organization

There are some simple patterns using constructors, anonymous listeners, etc to produce a reasonable program.

Tools to help build a GUI

Some IDEs have GUI editors. There are also separate GUI editors, eg XUI and UICompiler.



2 comments | Printer Friendly Page  Send to a Friend | Score: 0
Posted by jalex on Thursday, March 03, 2005 (00:00:00) (4180 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315|
314
| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


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