awt widgets yangjun chen dept. business computing university of winnipeg

40
Jan. 2004 1 AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Upload: shakti

Post on 06-Jan-2016

33 views

Category:

Documents


1 download

DESCRIPTION

AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg. Out line: AWT Widgets. Graphical components - Label -TextComponent -Button -CheckBox -Choice -List -Container -Canvas. Graphics. AWT. AWT Widgets - components for GUIs. AWT Widgets. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 1

AWT Widgets

Yangjun Chen

Dept. Business ComputingUniversity of Winnipeg

Page 2: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 2

Out line: AWT Widgets

• Graphical components- Label- TextComponent- Button- CheckBox- Choice- List- Container- Canvas

Page 3: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 3

AWT

Graphics

AWT Widgets - components for GUIs

Page 4: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 4

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 forimplementing a wide variety of widgets.

• These classes are platform independent, so a menu in a Javaprogram will look like a Windows menu on a PC

runningWindows, a Mac menu on a Macintosh, and a Motif

menu ona Unix machine - all with the same code.

Page 5: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 5

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 windowPanel - a container and a component

- Several Panels may be within a Frame, and within each Panel may be

several components.

Page 6: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 6

The Component Class

• The Component class is an “abstract” class.

Component

Canvas Container TextComponent Button

Panel Window TextField TextArea

Frame DialogApplet

Label

Page 7: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 7

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) { … }

}

The Component Class

• The Component class is an “abstract” class.

Page 8: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 8

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);}}

Page 9: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 9

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

runningsomething time sensitive like animation, special

techniques must beused.

Page 10: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 10

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

Page 11: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 11

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;

Page 12: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 12

public void init() {

//Start threadt = new Thread(this);t.start();

//Create bufferDimension d = getSize();buffer = createImage(d.width, d.height);

}

public void run() {try { while(true) {

repaint(); //Request a repaint

Page 13: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 13

//Sleep before updateThread.sleep(100);

}}catch(Exception e) {}

}

public void update(Graphics g) {paint(g);

}

public void paint(Graphics g) {

//Get graphics object for bufferif (buffer != null)

Page 14: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 14

{ bufferg = buffer.getGraphics();//Draw to bufferDimension 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 screeng.drawImage(buffer, 0, 0, this);

//Increment xx +=5;if (x + 50 > d.width)

x = 0;}}}

Page 15: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 15

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

methodsdefined in the Label class to get and set various

attributes.

Page 16: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 16

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

label0. is Label. LEFT1. is Label. CENTER2. is Label. RIGHT

- void setAlignment( int alignment)sets the alignment of the label to the specified argument

Page 17: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 17

Label Class

Example:

import java. awt.*;public class LabelExample extends java. applet. Applet{

public void init() {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

row numbercolumn number

Page 18: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 18

init() Method

• The init() method is somewhat like the paint() method inthat it’s not called by any method in our class.

• The init() method belongs to the Applet class and is calledwhen 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

Page 19: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 19

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 TextComponent

• There are quite a few methods that are inherited byTextField 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

Page 20: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 20

TextField Class

• Text fields are a box into which a single line of text may beplaced.

• Text fields are different from labels in that they can beedited.

Page 21: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 21

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

Page 22: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 22

TextArea Class

• Text areas are like text fields except they can handle largeramounts of text.

• Text areas can be given any width and height and havescroll bars by default.

Page 23: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 23

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

Page 24: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 24

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_ BOTHTextArea. SCROLLBARS_ NONETextArea. SCROLLBARS_ HORIZONTAL_ ONLYTextArea. SCROLLBARS_ VERTICAL_ ONLY

- The default is for both horizontal and vertical scrollbars to be

displayed.

Page 25: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 25

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

Page 26: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 26

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 theButton’s label by using the getLabel() method

whichreturns a String.

• Using the setLabel() method, you can set the label of thebutton by passing in a String value.

Page 27: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 27

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

Page 28: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 28

Checkbox Class

• Check boxes are UI components that have two states: onand 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

otheraction.

• 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

- Exclusivegiven a series of checkboxes, only one can be selected at

any one time;also known as radio buttons or checkboxgroups

Page 29: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 29

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 youto get and set the label, state and CheckboxGroup.

Page 30: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 30

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

Page 31: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 31

CheckBoxGroups

• A CheckboxGroup is a collection of Checkboxes in whichonly one of them can be selected at one time; -

also knownas radio buttons

• To create a series of radio buttons, first create an instanceof 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)

Page 32: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 32

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

Page 33: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 33

CheckBoxGroups

• Since CheckboxGroups only allow one button to be selectedat one time, the last Checkbox to be added to the

group withthe state being true will be the one selected by

default.• So in the previous example, radio button with the

label three would be selected.

Page 34: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 34

Choice Class

• Choice menus are more complex than labels, buttons, orcheckboxes

• Choice menus are pop-up or pull-down lists in which anitem can be selected.

• To create a Choice menu, we first need an instance of theChoice class and then add items to it.

• The items added are enumerated from top to bottomstarting 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

Page 35: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 35

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

Page 36: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 36

List Class

• A List is functionally similar to a Choice menu in that itlets you choose from a list, but Lists do not pop-

up, theyare permanently displayed on the screen.

• You can choose more than one item on the List if thatcapability is enabled.

• List items are enumerated from top to bottom starting atindex 0 just like a Choice menu.

Page 37: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 37

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.

Page 38: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 38

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

Page 39: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 39

List Class

• There are many methods in this class, we will look at a fewof 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 selectionreturns -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)

Page 40: AWT Widgets Yangjun Chen Dept. Business Computing University of Winnipeg

Jan. 2004 40

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