|
|
|
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"!. |
|
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
|
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
12753 bytes more | 2 comments | | Score: 5
|
Posted by jalex on Thursday, March 03, 2005 (00:00:00) (10476 reads)
|
Java: GUI Overview
|
A GUI (Graphical User Interface) is easy to create after you have
a few basic elements from these groups:
- Top-level Containers (eg, JFrame)
- Intermediate Containers (eg, JPanel, JMenuBar)
- Components (eg, JLabel, JButton, JTextField)
- Listeners (eg, ActionListener)
- 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 | | Score: 0
|
Posted by jalex on Thursday, March 03, 2005 (00:00:00) (4180 reads)
|
|
|