Java Advanced
Java Advanced
Abstract Windowing
Toolkit AWT(12
Marks)
1
INTRODUCTION
Java AWT (Abstract Windowing Toolkit) is an API to
develop GUI or window-based application in java.
Java AWT components are platform-dependent i.e.
components are displayed according to the view of
operating system.
AWT is heavyweight i.e. its components uses the
resources of system.
The java.awt package provides classes for AWT API such
as TextField, Label, TextArea, RadioButton,
CheckBox, Choice, List etc.
2
GUI
3
AWT HIERARCHY
4
OBJECT
5
COMPONENT
6
METHODS OF COMPONENT CLASS
Method Description
9
AN APPLET IS PANEL IS A CONTAINER
java.lang.Object
| +----java.awt.Component
| +----java.awt.Container
| +----java.awt.Panel
| +----java.applet.Applet
10
AN APPLET
12
APPLET LIFE CYCLE
13
WINDOW
The window is the container that have no
borders and menu bars.
You must use frame, dialog or another window for
creating a window.
14
FRAME
• It is subclass of Window.
• The Frame is the container that contain title bar and
can have menu bars,borders, and resizing corners.
• It can have other components like button, textfield,
etc.
• Methods:
• void setTitle(String title)
• void setBackground(Color bgcolor)
15
WORKING WITH FRAME WINDOW
Extends Frame class
Constructor are:
Frame()
Frame(String title)
16
FRAME CLASS
We can create stand-alone AWT based
applications.
A Frame provides main window for the GUI
application.
There are two ways to create a Frame :
1. By instantiating Frame Class
2. By extending Frame class
17
PROGRAM USING FRAMES
import java.awt.*;
class FirstFrame{ public static void main(String args[]){
FirstFrame(){ FirstFrame f=new FirstFrame();
Frame f=new Frame(); }
Button b=new Button("click }me");
b.setBounds(30,50,80,30);
f.add(b);
f.setSize(300,300);
f.setLayout(null);
f.setVisible(true); }
18
PROGRAM USING FRAMES
19
CONTROLS
Labels
Buttons
Checkbox
CheckboxGroup
Textfield
TextFieldArea
ScollBar
20
LABEL
The easiest control to use is a label.
A label is an object of type Label, and it contains a
string, which it displays.
Labels are passive controls that do not support
any interaction with the user.
21
LABELS
• Label defines the following constructors:
• Label( )
• Label(String str)
• Label(String str, int how)
• The first version creates a blank label.
• The second version creates a label that contains the string
specified by str. This string is left-justified.
• The third version creates a label that contains the string
specified by str using the alignment specified by how. The
value of how must be one of these three constants:
Label.LEFT, Label.RIGHT, or Label.CENTER.
22
LABEL
Methods
23
CONTROLS
// Demonstrate Labels
public void init()
import java.awt.*; {
import java.applet.*; Label one = new Label("One");
/* Label two = new Label("Two");
<applet code="LabelDemo" Label three = new Label("Three");
width=300 height=200> // add labels to applet window
</applet> add(one);
add(two);
*/ add(three);
public class LabelDemo extends }
Applet }
{
24
BUTTONS
The most widely used control is the push button.
A push button is a component that contains a label and
that generates an event when it is pressed.
Push buttons are objects of type Button.
Button()
Button(String str)
25
BUTTONS
• String getLabel()
• void setLabel(String str)
• void setEnabled(Boolean enable)
• Void addActionListener(ActionListener l)
• void removeActionListener(ActionListener l)
• String getActionCommand()
• void setActionCommand(String Cmd)
26
Button yes, no, maybe;
// Demonstrate Buttons public void init()
import java.awt.*; {
import java.applet.*; yes = new Button("Yes");
/* no = new Button("No");
<applet code="ButtonDemo" maybe = new Button(“Understand");
width=250 height=150> add(yes);
</applet> add(no);
*/ add(maybe);
public class ButtonDemo extends }
Applet public void paint(Graphics g)
{ {
String msg = ""; g.drawString(msg, 6, 100);
}
}
27
CHECK BOXES
A check box is a control that is used to turn an
option on or off.
It consists of a small box that can either contain a
check mark or not.
There is a label associated with each check box that
describes what option the box represents.
We change the state of a check box by clicking on it.
Check boxes can be used individually or as part of a
group.
28
CHECKBOX CONSTRUCTORS:
Checkbox( )
Checkbox(String str)
Checkbox(String str, boolean on)
Checkbox(String str, boolean on, CheckboxGroup
cbGroup)
Checkbox(String str, CheckboxGroup cbGroup, boolean
on)
29
METHODS
boolean getState( )
void setState(boolean on)
String getLabel( )
void addItemListener(ItemListener l)
void removeItemListener(ItemListener l)
30
public void init()
// Demonstrate check boxes. {
import java.awt.*; Win98 = new Checkbox("Windows 98/XP",
import java.applet.*; null, true);
winNT = new Checkbox("Windows
/*
NT/2000");
<applet code="CheckboxDemo" solaris = new Checkbox("Solaris");
width=250 height=200> mac = new Checkbox("MacOS");
</applet> add(Win98);
*/ add(winNT);
public class CheckboxDemo extends add(solaris);
add(mac);
Applet
}
{ public void paint(Graphics g)
String msg = ""; {}
Checkbox Win98, winNT, solaris, mac; }
31
32
CHECKBOX GROUP
It is possible to create a set of mutually exclusive
check boxes in which one and only one check box
in the group can be checked at any one time.
These check boxes are often called radio button.
Check box groups are objects of type
CheckboxGroup.
Only the default constructor is defined, which
creates an empty group.
33
METHODS
Checkbox getSelectedCheckbox( )
void setSelectedCheckbox(Checkbox wh)
34
public void init()
{
import java.awt.*; cbg = new CheckboxGroup();
import java.applet.*;
Win98 = new Checkbox("Windows 98/XP",
/*
<applet code="CBGroup" cbg, true);
width=250 height=200> winNT = new Checkbox("Windows NT/2000",
</applet> cbg, false);
*/ solaris = new Checkbox("Solaris", cbg,
public class CBGroup extends Applet
false);
{
String msg = ""; mac = new Checkbox("MacOS", cbg,
Checkbox Win98, winNT, false);
solaris, mac; add(Win98); add(winNT);
CheckboxGroup cbg; add(solaris); add(mac);}
public void paint(Graphics g)
{
msg = "Current selection: ";
msg +=
cbg.getSelectedCheckbox().getLabel();
g.drawString(msg, 6, 100); 35
}}
36
CHOICE CONTROLS
The Choice class is used to create a pop-up list of
items from which the user may choose.
Thus, a Choice control is a form of menu.
37
METHODS
void add(String name)
String getSelectedItem( )
int getSelectedIndex( )
int getItemCount( )
void select(int index)
void select(String name)
String getItem(int index)
38
import java.awt.*;
import java.applet.*; os.add("Solaris");
/* os.add("MacOS");
<applet code="ChoiceDemo" browser.add("Netscape 3.x");
width=300 height=180> browser.add("Netscape 4.x");
</applet> browser.add("Netscape 5.x");
*/ browser.add("Netscape 6.x");
public class ChoiceDemo extends browser.add("Internet Explorer 4.0");
Applet browser.add("Internet Explorer 5.0");
{ browser.add("Internet Explorer 6.0");
Choice os, browser; browser.add("Lynx 2.4");
String msg = ""; browser.select("Netscape 4.x");
public void init() add(os);
{ add(browser);
os = new Choice(); }
browser = new Choice(); public void paint(Graphics g)
os.add("Windows 98/XP"); {}}
os.add("Windows NT/2000");
39
40
LISTS
The List class provides a compact, multiple-choice,
scrolling selection list.
Unlike the Choice object, which shows only the
single selected item in the menu, a List object can
be constructed to show any number of choices in
the visible Window.
It can also be created to allow multiple selections.
41
LIST
• List( )
• List(int numRows)
• List(int numRows, boolean multipleSelect)
• The first version creates a List control that allows only one item to be
selected at any one time.
• In the second form, the value of numRows specifies the number of
entries in the list that will always be visible (others can be scrolled into
view as needed).
• In the third form, if multipleSelect is true, then the user may select two
or more items at a time.
42
METHODS
43
44
SCROLLBARS
Scroll bars are used to select continuous values between a
specified minimum and maximum.
Scroll bars may be oriented horizontally or vertically.
45
CONSTRUCTORS
Scrollbar( )
Scrollbar(int style)
Scrollbar(int style, int iValue, int tSize, int min,
int max)
• The first form creates a vertical scroll bar.
• The second and third forms allow us to specify style
Scrollbar.VERTICAL, Scrollbar.HORIZONTAL.
• In the third form, the initial value of the scroll bar is passed
in iValue. The number of units represented by the height of
the thumb is passed in tSize. The minimum and maximum
values for the scroll bar are specified by min and max.
46
METHODS
47
48
TEXTFIELD
49
TEXTFIELD CONSTRUCTORS
TextField( )
TextField(int numChars)
TextField(String str)
TextField(String str, int numChars)
50
TEXTFIELD METHODS
String getText( )
void setText(String str)
String getSelectedText( )
void select(int startIndex, int endIndex)
boolean isEditable( )
void setEditable(boolean canEdit)
void setEchoChar(char ch)
boolean echoCharIsSet( )
char getEchoChar( )
51
52
TEXTAREA
Sometimes a single line of text input is not enough for a
given task. To handle these situations, the AWT includes
a simple multiline editor called TextArea.
Following are the constructors for TextArea:
TextArea( )
TextArea(int numLines, int numChars)
TextArea(String str)
TextArea(String str, int numLines, int numChars)
TextArea(String str, int numLines, int numChars, int sBars)
54
55
LAYOUT MANAGERS
Layout means arranging the components within the
container.
The task of lay outing can be done automatically by
the Layout manager.
The layout manager is set by the setLayout( ) method.
56
The setLayout( ) method has the following
general form:
void setLayout(LayoutManager layoutObj)
57
LAYOUTMANAGER
LayoutManager is an interface that is implemented
by all the classes of layout managers. There are
following classes that represents the layout managers:
FlowLayout
BorderLayout
GridLayout
CardLayout
GridBagLayout
58
FLOWLAYOUT
FlowLayout is the default layout manager.
FlowLayout implements a simple layout style,
which is similar to how words flow in a text
editor.
Components are laid out from the upper-left
corner, left to right and top to bottom.
When no more components fit on a line, the next
one appears on the next line.
A small space is left between each component,
above and below, as well as left and right.
59
FLOWLAYOUT CONSTRUCTORS
FlowLayout( )
FlowLayout(int how)
FlowLayout(int how, int horz, int vert)
The first is default, which centers components and
leaves five pixels of space between each
component.
The second form lets us specify how each line is
aligned. Valid values for how are as follows:
FlowLayout.LEFT
FlowLayout.CENTER
FlowLayout.RIGHT
The third form allows us to specify the horizontal
and vertical space left between components 60
FLOWLAYOUT METHODS
int getAlignment()
int getHgap()
int getVgap()
61
public class FlowLayoutDemo extends Applet
{
Checkbox Win98, winNT, solaris, mac;
public void init()
{
Win98 = new Checkbox("Windows 98/XP", null, true);
winNT = new Checkbox("Windows NT/2000");
solaris = new Checkbox("Solaris");
mac = new Checkbox("MacOS");
setLayout(new
FlowLayout(FlowLayout.CENTER));
add(Win98); add(winNT);add(solaris);add(mac);
}} 62
63
BORDERLAYOUT
The BorderLayout class implements a common
layout style for top-level windows.
It has four narrow, fixed-width components at
the edges and one large area in the center.
The four sides are referred to as
north,
south,
east, and
west.
The middle area is called the center.
64
BORDERLAYOUT CONSTRUCTORS
BorderLayout( )
BorderLayout(int horz, int vert)
65
BORDERLAYOUT
• BorderLayout defines the following constants that specify
the regions:
• BorderLayout.CENTER
• BorderLayout.SOUTH
• BorderLayout.EAST
• BorderLayout.WEST
• BorderLayout.NORTH
• To add components, we use these constants with the
following form of add( ), which is defined by Container:
• void add(Component compObj, Object region);
• Here, compObj is the component to be added, and region
specifies where the component will be added.
66
public class BorderLayoutDemo extends Applet {
public void init() {
setLayout(new BorderLayout());
add(new Button("This is across the top."),
BorderLayout.NORTH);
add(new Label("The footer message."),
BorderLayout.SOUTH);
add(new Button("Right"), BorderLayout.EAST);
add(new Button("Left"), BorderLayout.WEST);
String msg = "The reasonable man adapts himself to the world;\n" +
"the unreasonable one persists in trying to adapt the world to
himself.\n" +
"Therefore all progress depends on the unreasonable man.\n\n" + " -
George Bernard Shaw\n\n";
add(new TextArea(msg), BorderLayout.CENTER);
}
}
67
68
GRIDLAYOUT
GridLayout lays out components in a two-
dimensional grid.
When we instantiate a GridLayout, we define the
number of rows and columns.
69
GRIDLAYOUT CONSTRUCTORS
GridLayout( )
GridLayout(int numRows, int numColumns )
73
CardLayout provides these two constructors:
CardLayout( )
CardLayout(int horz, int vert)
The first form creates a default card layout.
The second form allows us to specify the horizontal
and vertical space left between components.
74
METHODS
void add(Component panelObj, Object name);
Here name is a string that specifies the name of the
card whose panel is specified by panelObj. After we
have created a deck, our program activates a card by
calling one of the following methods:
void first(Container deck)
void last(Container deck)
void next(Container deck)
void previous(Container deck)
void show(Container deck, String cardName)
deck is a reference to the container (usually a panel)
that holds the cards, and cardName is the name of a
card. 75
76
• // Demonstrate CardLayout.
import java.awt.*;
import java.awt.event.*;
public class CardLayoutExample extends Frame impl
ements ActionListener{
CardLayout card;
Button b1,b2,b3;
CardLayoutExample(){
card=new CardLayout(40,30);
setLayout(card);
77
b1=new Button("Apple");
b2=new Button("Boy");
b3=new Button("Cat");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
add(b1,”card1”); add(b2,”card2”); add(b3,”card3”); }
public void actionPerformed(ActionEvent e) {
card.next(this);
}
public static void main(String[] args) {
CardLayoutExample cl=new CardLayoutExample();
cl.setSize(400,400);
cl.setVisible(true);
} }
78
79
GRIDBAGLAYOUT
Each GridBagLayout object maintains a dynamic
rectangular grid of cells, with each component
occupying one or more cells, called its display area.
Each component managed by a grid bag layout is
associated with an instance of GridBagConstraints
that specifies how the component is laid out within
its display area.
80
For customize a GridBagConstraints object by setting
one or more of its instance variables:
gridx, gridy: Specifies the cell at the upper left of the
component's display area, where the upper-left-most
cell has address gridx = 0, gridy = 0.
gridwidth, gridheight: Specifies the number of cells in
a row (for gridwidth) or column (for gridheight) in the
component's display area. The default value is 1.
fill: Used when the component's display area is larger
than the component's requested size to determine
whether (and how) to resize the component.
81
import java.awt.*;
import java.util.*;
import java.applet.Applet;
public class GridBagEx1 extends Applet {
protected void makebutton(String name,
GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
add(button);
}
public void init() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
82
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
makebutton("Button1", gridbag, c);
makebutton("Button2", gridbag, c);
makebutton("Button3", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton("Button4", gridbag, c);
c.weightx = 0.0; //reset to the default
makebutton("Button5", gridbag, c); //another row
}
public static void main(String args[]) {
Frame f = new Frame("GridBag Layout Example");
GridBagEx1 ex1 = new GridBagEx1();
ex1.init(); f.add("Center", ex1); f.pack();
f.resize(f.preferredSize());
f.show(); } }
83
MENU BARS AND MENUS
A menu bar displays a list of top-level menu choices.
Each choice is associated with a dropdown menu.
This concept is implemented in Java by the following
classes:
MenuBar, Menu, and MenuItem.
In general, a menu bar contains one or more Menu
objects. Each Menu object contains a list of MenuItem
objects. Each MenuItem object represents something
that can be selected by the user.
84
85
MenuBar Class Defines only default constructor.
Menu Class Constructors
Menu( )
Menu(String optionName)
Menu(String optionName, boolean removable)
86
METHODS
Disable or enable a menu item by using:
void setEnabled(boolean enabledFlag)
boolean isEnabled( )
87
METHODS
Status about checkable MenuItem:
boolean getState( )
void setState(boolean checked)
88
import java.awt.*; menu.add(i1);
class MenuExample menu.add(i2); menu.add(i3);
{ submenu.add(i4);
MenuExample(){ submenu.add(i5);
Frame f= new Frame("Menu Example"); menu.add(submenu);
mb.add(menu);
MenuBar mb=new MenuBar(); f.setMenuBar(mb);
Menu menu=new Menu("Menu"); f.setSize(400,400);
Menu submenu=new Menu("Sub Menu"); f.setLayout(null);
f.setVisible(true);
MenuItem i1=new MenuItem("Item 1");
}
MenuItem i2=new MenuItem("Item 2");
public static void main
MenuItem i3=new MenuItem("Item 3");
(String args[]) {
MenuItem i4=new MenuItem("Item 4");
new MenuExample();
MenuItem i5=new MenuItem("Item 5");
} }
89
90
DIALOGBOX
Dialog boxes are primarily used to obtain user input.
They are similar to frame windows, except that dialog
boxes are always child windows of a top-level window.
Dialog boxes don’t have menu bars.
92
import java.awt.*;
import java.awt.event.*;
public class DialogExample {
private static Dialog d;
DialogExample() {
Frame f= new Frame();
d = new Dialog(f , "Dialog Example", true);
d.setLayout( new FlowLayout() );
Button b = new Button ("OK");
b.addActionListener ( new ActionListener()
{ public void actionPerformed( ActionEvent e )
{ DialogExample.d.setVisible(false); }
});
d.add( new Label ("Click button to continue."));
d.add(b); d.setSize(300,300);
d.setVisible(true); }
93
FILEDIALOG
Java provides a built-in dialog box that lets the user
specify a file.
To create a file dialog box, instantiate an object of type
FileDialog.
Constructor:
Methods:
String getDirectory( )
94
String getFile( )
import java.awt.*;
class SampleFrame extends Frame
{
SampleFrame(String title){
super(title); }}
class FileDialogDemo
{public static void main(String args[]){
Frame f = new SampleFrame("File Dialog Demo");
f.setVisible(true);
f.setSize(100, 100);
FileDialog fd = new FileDialog(f, "File Dialog");
fd.setVisible(true);
}} 95
96