400 likes | 530 Views
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.
E N D
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 • 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.
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.
Component Label Canvas Container TextComponent Button Panel Window TextField TextArea Frame Dialog Applet The Component Class • The Component class is an “abstract” class.
The Component Class 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 is an “abstract” class.
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);}}
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.
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
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;
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
//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)
{ 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;}}}
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.
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
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 number column number
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
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
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.
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
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.
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
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.
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
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.
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
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
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 you • 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
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)
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
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.
Choice Class • Choice menus are more complex than labels, buttons, or • checkboxes • Choice menus are pop-up or pull-downlists 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
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
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.
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.
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
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)
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