AWT - The University of Winnipeg

Download Report

Transcript AWT - The University of Winnipeg

AWT Widgets
Yangjun Chen
Dept. Business Computing
University of Winnipeg
Jan. 2004
1
Out line: AWT Widgets
• Graphical components
- Label
-
TextComponent
Button
CheckBox
Choice
List
Container
Canvas
Jan. 2004
2
Graphics
AWT
AWT Widgets - components for GUIs
Jan. 2004
3
AWT Widgets
• Widgets are components such as:
- buttons, text fields, menus, etc.
• These widgets are used to make up a Graphical User
Interface (GUI)
• The java.awt package provides a set of classes for
implementing a wide variety of widgets.
• These classes are platform independent, so a menu in a
Java
program will look like a Windows menu on a PC running
Windows, a Mac menu on a Macintosh, and a Motif
menu on
a Unix machine - all with the same code.
Jan. 2004
4
AWT Widgets
• We construct a GUI by placing components within a
container.
- normally, there are only two types of containers used:
Frame - creates a complete window
Panel - a container and a component
- Several Panels may be within a Frame, and within each Panel
may be
several components.
Jan. 2004
5
The Component Class
• The Component class is an “abstract” class.
Component
Canvas
Container
Panel
Applet
Jan. 2004
TextComponent
Window
Frame
TextField
Label
Button
TextArea
Dialog
6
The Component Class
• The Component class is an “abstract” class.
public abstract class Component {
……
paint (Graphics g) { }
repaint(int x, int, y, int width, int height) { … }
update(Graphics g) { … }
}
Jan. 2004
7
The Component Class
• void paint (Graphics g)
- this method causes something to be painted in the component.
- in Component class, this method is empty and does nothing, it is
intended to be overridden in a subclass as we have been doing.
- Example:
…
public void paint(Graphics g) {
g.setFont (new Font(“Serif”, Font.BOLD, 36));
FontMetrics fm = g.getFontMetrics( );
String str = “” + counter;
Dimention d = getSize();
int x = d.width/2 - fm.stringWidth(str)/2;
g.drawString(str, x, d.height/2);}}
Jan. 2004
8
The Component Class
• When you want to update the display, you cannot directly
call the paint( ) method can. But you can cause it to be
called by calling a method called repaint().
• void repaint ()
• void repaint (int x, int y, int width, int height)
- These two methods are used to tell the system to redraw the
Component as soon as possible
- They instruct the system to schedule a call to update()
- You can’t count on repaint() to immediately update your screen most of the time it will happen quickly, but if you are running
something time sensitive like animation, special techniques must
be
used.
Jan. 2004
9
The Component Class
• void update( Graphics g)
- like the paint() method, you can’t invoke this method directly
- The system calls this method when the screen needs to be
redrawn.
For example, whenever repaint( ) is executed.
- If this method is not overridden, this method will clear your
component and then call the paint method
Jan. 2004
10
import java.applet.*;
import java.awt.*;
import java.lang.*;
/*
<applet code="DoubleBuffer" width=30 height=100>
</applet>
*/
public class DoubleBuffer extends Applet implements Runnable {
int x = 5;
Thread t;
Image buffer = null;
Graphics bufferg;
Jan. 2004
11
public void init() {
//Start thread
t = new Thread(this);
t.start();
//Create buffer
Dimension d = getSize();
buffer = createImage(d.width, d.height);
}
public void run() {
try {
while(true) {
repaint(); //Request a repaint
Jan. 2004
12
//Sleep before update
Thread.sleep(100);
}
}
catch(Exception e) {}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
//Get graphics object for buffer
if (buffer != null)
Jan. 2004
13
{
bufferg = buffer.getGraphics();
//Draw to buffer
Dimension d = getSize();
bufferg.setColor(Color.white);
bufferg.fillRect(0, 0, d.width, d.height);
bufferg.setColor(Color.black);
bufferg.fillOval(x, d.height/4, 50, 50);
//Update screen
g.drawImage(buffer, 0, 0, this);
//Increment x
x +=5;
if (x + 50 > d.width)
x = 0;}}}
Jan. 2004
14
Textual Widgets - Labels
• A label is a component that will display a line of read-only
text on the screen.
• It has three constructors:
- Label()
center alignment and no text
- Label( String text)
a center aligned Label object displaying the text given
- Label( String text, int alignment)
Label with the given text and alignment specified as either
Label. LEFT, Label. CENTER, and Label. RIGHT
• After you have a Label object, you can use methods
defined in the Label class to get and set various
attributes.
Jan. 2004
15
Label Class
-
-
-
String getText()
returns a string containing this label’s text
void setText( String text)
sets the text for this label to the value of the argument
int getAlignment()
returns an integer corresponding to the alignment of the label
0. is Label. LEFT
1. is Label. CENTER
2. is Label. RIGHT
void setAlignment( int alignment)
sets the alignment of the label to the specified argument
Jan. 2004
16
Label Class
Example:
import java. awt.*;
public class LabelExample extends java. applet. Applet{
row number
public void init() {
column number
setLayout( new GridLayout( 1, 1));
add( new Label(“ left”, Label. LEFT));
add( new Label(“ center”, Label. CENTER));
add( new Label(“ right”, Label. RIGHT));
}//end of init
}//end of LabelExample
Jan. 2004
17
init() Method
• The init() method is somewhat like the paint() method in
that it’s not called by any method in our class.
• The init() method belongs to the Applet class and is
called
when the applet is first loaded.
- This is where we would want to do any onetime initialization
- Very similar to the main( ) method for Java application
Jan. 2004
18
Text Component Class
• There are two textual widgets: TextField and TextArea
that are very similar to each other, so the data and
methods that are common to both were removed and
placed into the TextComponent class
• So TextField and TextArea are both subclasses of Text
Component
• There are quite a few methods that are inherited by
TextField and TextArea
- String getText()
returns a copy of the current contents of the component
- void setText( String text)
sets the current text to what is specified in by the argument
Jan. 2004
19
TextField Class
• Text fields are a box into which a single line of text may
be
placed.
• Text fields are different from labels in that they can be
edited.
Jan. 2004
20
TextField Class
• There are four constructors to TextField objects:
- TextField()
creates an empty text field that is 0 characters wide
- TextField( int columns)
creates an empty text field wide enough to hold columns
characters
- TextField (String Text)
creates a text field initialized with the given string
- TextField( String text, int columns)
creates a text field with content and width given by text and
columns
Jan. 2004
21
TextArea Class
• Text areas are like text fields except they can handle
larger
amounts of text.
• Text areas can be given any width and height and have
scroll bars by default.
Jan. 2004
22
TextArea Class
• There are five constructors for a TextArea object:
- TextArea()
creates an empty TextArea object
- TextArea( int rows, int columns)
creates an empty text area with the given number of rows
and
columns( chars)
- TextArea( String text)
creates a default sized text area containing the argument string
- TextArea( String text, int rows, int columns)
creates a text area displaying the given string with the size
specified
Jan. 2004
23
TextArea Class
-
TextArea( String text, int rows, int columns, int scrollbars)
Acts like the preceding constructor, in addition it has an
argument to specify whether or not the text area will
have
scrollbars.
There are 4 constant arguments that can be used:
TextArea. SCROLLBARS_ BOTH
TextArea. SCROLLBARS_ NONE
TextArea. SCROLLBARS_ HORIZONTAL_ ONLY
TextArea. SCROLLBARS_ VERTICAL_ ONLY
The default is for both horizontal and vertical scrollbars to be
displayed.
Jan. 2004
24
TextArea Class
• An example:
import java. awt.*;
public class TextAreaExample extends java. applet. Applet {
public void init() {
String str = “This is an example for a TextArea that \n”+
“spans multiple lines. \n”+
“This is for course 91.3930/ 3 at the \n”+
“University of Winnipeg!\n”;
add( new TextArea( str));
}//end of int
}//end of TextAreaExample
Jan. 2004
25
Button Class
• Buttons are a simple UI component that triggers some
action
• There are two constructors for a Button object:
- Button()
creates an empty button with no label
- Button( String label)
creates a button with the given string as a label
• After creating a Button object, you can get the value of
the
Button’s label by using the getLabel() method which
returns a String.
• Using the setLabel() method, you can set the label of the
button by passing in a String value.
Jan. 2004
26
Button Class
• An Example:
import java. awt.*;
public class ButtonExample extends java. applet. Applet {
public void init() {
add( new Button(“ Rewind”));
add( new Button(“ Fast Forward”));
add( new Button(“ Play”));
add( new Button(“ Stop”));
add( new Button(“ Pause”));
}//end of init
}//end of ButtonExample
Jan. 2004
27
Checkbox Class
• Check boxes are UI components that have two states: on
and off (or checked and unchecked, or true and false)
• unlike buttons, check boxes don’t trigger a direct action,
but are used to indicate optional features of some other
action.
• Check boxes can be used in two ways:
- Nonexclusive
given a series of checkboxes, any of them can be selected;
can be checked or unchecked independently of each other
- Exclusive
given a series of checkboxes, only one can be selected at any
one time;
also known as radio buttons or checkboxgroups
Jan. 2004
28
Checkbox Class
• There are five constructors:
- Checkbox()
creates a Checkbox with no label and false
- Checkbox( String label)
creates a Checkbox with the given label and initialized to
false
- Checkbox( String label, boolean state)
creates a Checkbox with the given label and state
- Checkbox( String label, boolean state, CheckboxGroup group)
- Checkbox( String label, CheckboxGroup group, boolean state)
The last two create a Checkbox with the label and state
specified
as well as specifying a group that this Checkbox
will belong to.
• There are a number of methods in this class that allow
Jan.you
2004
29
to get and set the label, state and CheckboxGroup.
Checkbox Class
• An Example:
import java. awt.*;
public class CheckboxExample extends java. applet. Applet {
public void init() {
setLayout( new FlowLayout( FlowLayout. LEFT));
add( new Checkbox(“ Red”));
add( new Checkbox(“ Orange”));
add( new Checkbox(“ Yellow”));
add( new Checkbox(“ Green”));
add( new Checkbox(“ Blue”));
add( new Checkbox(“ Indigo”));
add( new Checkbox(“ Violet”));
}//end of init
}//end of CheckboxExample
Jan. 2004
30
CheckBoxGroups
• A CheckboxGroup is a collection of Checkboxes in which
only one of them can be selected at one time; - also
known
as radio buttons
• To create a series of radio buttons, first create an
instance
of CheckboxGroup
- ChecboxGroup cbg = new CheckboxGroup();
• Then create and add the radio buttons into the group
- use either of the following two methods:
Checkbox( String label, boolean state, CheckboxGroup group)
Checkbox( String label, CheckboxGroup group, boolean state)
Jan. 2004
31
CheckBoxGroups
• An Example:
import java. awt.*;
public class CheckboxGroupExample extends java. applet. Applet {
public void init() {
setLayout( new FlowLayout( FlowLayout. LEFT));
CheckboxGroup cbg = new CheckboxGroup();
add( new Checkbox(“ One”, false, cbg));
add( new Checkbox(“ Two”, false, cbg));
add( new Checkbox(“ Three”, true, cbg));
add( new Checkbox(“ Four”, false, cbg));
}//end of init
}//end of CheckboxGroupExample
Jan. 2004
32
CheckBoxGroups
• Since CheckboxGroups only allow one button to be
selected
at one time, the last Checkbox to be added to the group
with
the state being true will be the one selected by default.
• So in the previous example, radio button with the label
three would be selected.
Jan. 2004
33
Choice Class
• Choice menus are more complex than labels, buttons, or
checkboxes
• Choice menus are pop-up or pull-down lists in which an
item can be selected.
• To create a Choice menu, we first need an instance of
the
Choice class and then add items to it.
• The items added are enumerated from top to bottom
starting with the index 0.
• One of the methods in this class to make note of is:
- String getSelectedItem()
returns the text of the current selection
Jan. 2004
34
Choice Class
• An Example:
import java. awt.*;
public class ChoiceExample extends java. applet. Applet {
public void init() {
Choice c = new Choice();
c. add(“ Red”);
c. add(“ Orange”);
c. add(“ Yellow”);
c. add(“ Green”);
c. add(“ Blue”);
c. add(“ Indigo”);
c. add(“ Violet”);
add( c);
}//end of init
}//end of ChoiceExample
Jan. 2004
35
List Class
• A List is functionally similar to a Choice menu in that it
lets you choose from a list, but Lists do not pop-up, they
are permanently displayed on the screen.
• You can choose more than one item on the List if that
capability is enabled.
• List items are enumerated from top to bottom starting at
index 0 just like a Choice menu.
Jan. 2004
36
List Class
• There are three constructors for a List object:
- List()
creates a default sized List object in single selection mode
- List( int rows)
creates a List object in single selection mode with the
number of
rows given
- List( int rows, boolean multipleselection)
creates a List object with the specified number of rows. The
List is
in multiple selection mode if the boolean argument is
true and
single selection otherwise.
Jan. 2004
37
List Class
• An Example:
import java. awt.*;
public class ListExample extends java. applet. Applet {
public void init() {
List mylist = new List( 7, true);
mylist. add(“ Red”);
mylist. add(“ Orange”);
mylist. add(“ Yellow”);
mylist. add(“ Green”);
mylist. add(“ Blue”);
mylist. add(“ Indigo”);
mylist. add(“ Violet”);
add( mylist);
}//end of init
}//end of ListExample
Jan. 2004
38
List Class
• There are many methods in this class, we will look at a
few
of them:
- String getItem( int index)
returns the item string at the given index
- int getItemCount()
returns the number of items in the list
- int getSelectedIndex()
returns the index of the current selection
returns -1 if no item is selected or more than 1 item is
selected
- int[] getSelectedIndexes()
returns an array of index positions (for multiple selection
lists)
Jan. 2004
39
List Class
- String getSelectedItem()
returns the selected item as a string
- String[] getSelectedItems()
returns an array of strings containing all selected items
- void select( int index)
selects the item at the specified index
Jan. 2004
40