gui programming (awt)

39
Programming in JAVA Topic: GUI Basics (AWT) By Ravi Kant Sahu Asst. Professor Lovely Professional University, Punjab Lovely Professional University, Punjab

Upload: ravikantsahu

Post on 05-Dec-2014

1.408 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Gui programming (awt)

Programming in JAVA

Topic: GUI Basics (AWT)

ByRavi Kant SahuAsst. Professor

Lovely Professional University, PunjabLovely Professional University, Punjab

Page 2: Gui programming (awt)

Introduction• AWT is a java API that is used to develop GUI applications in Java.

• API is a collection of classes and interfaces that provide the basic infrastructure or core functionalities for developing specific type of application.

• There are three types of GUI classes:1) Container classes2) Component classes3) Helper classes

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 3: Gui programming (awt)

Component Classes

• An instance of Component can be displayed on the screen.

• Component is the root class of all the user-interface classes including container classes, and JComponent is the root class of all the lightweight Swing components.

• Button, Label, TextField etc.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 4: Gui programming (awt)

Container Classes

• An instance of Container can hold instances of Component.

• Container classes are GUI components that are used to contain other GUI components.

• Window, Panel, Applet, Frame, and Dialog are the container classes for AWT components.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 5: Gui programming (awt)

Helper Classes

• The helper classes, such as Graphics, Color, Font, FontMetrics, Dimension, and LayoutManager, are not subclasses of Component.

• They are used to describe the properties of GUI components, such as graphics context, colors, fonts, and dimension etc.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 6: Gui programming (awt)

AWT classes

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Class Description

AWTEvent Encapsulates AWT events

Button Creates a push button control

Canvas A blank, semantics-free window

Checkbox Creates a check box control

CheckboxGroup Creates a group of check box controls

Color Manages colors in a portable, platform-independent fashion

Font Encapsulates a type font

Frame Creates a standard window that has a title bar, resize corners, and a menu bar

Graphics Encapsulates the graphics context. This context is used by thevarious output methods to display output in a window.

Page 7: Gui programming (awt)

AWT classes

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Class Description

TextField Creates a single-line edit control

TextArea Creates a multiline edit control

Window Creates a window with no frame, no menu bar, and no title

Scrollbar Creates a scroll bar control

MenuItem Creates a menu item

Menu Creates a pull-down menu

MenuBar Creates a menu bar

MenuShortcut Encapsulates a keyboard shortcut for a menu item

ScrollPane A container that provides horizontal and/or vertical scroll barsfor another component

Page 8: Gui programming (awt)

Component Class Hierarchy of AWTComponent

Container(Non-Container)

Window Panel

Frame Applet

Button Label Text Field Check-Box Text Area etc.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 9: Gui programming (awt)

• Component is an abstract class that describes the basic functionality supported by all AWT components.

• Container is an abstract sub-class of Component that adds the functionality of containership to a component.

• A Container component can contain another container or non-container components.

• Window and Panel are two non-abstract sub-classes of Container.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 10: Gui programming (awt)

Component Cont…• Panel represents a rectangular region that does not have a

border and title bar.

• Window is a Panel with border and title bar.

• Window can independently exist whereas panel can’t.

• Frame is a sub-class of Window .

• Button, Label, TextField, CheckBox etc. are non-container components.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 11: Gui programming (awt)

Component• Component is an abstract class that encapsulates all of the

attributes of a visual component.

• All user interface elements that are displayed on the screen and that interact with the user are subclasses of Component.

• It defines over a hundred public methods that are responsible for managing events, such as mouse and keyboard input, positioning and sizing the window, and repainting.

• A Component object is responsible for remembering the current foreground and background colors and the currently selected text font.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 12: Gui programming (awt)

Container• Container class is a subclass of Component.

• It has additional methods that allow other Component objects to be nested within it.

• Other Container objects can be stored inside of a Container (since they are themselves instances of Component).

• This makes for a multileveled containment system.

• A container is responsible for laying out (that is, positioning) any components that it contains. It does this through the use of various layout managers.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 13: Gui programming (awt)

Panel• Panel is a window that does not contain a title bar, menu bar, or

border.

• The screen output of an applet is drawn on the surface of a Panel object. but it is not visible when applet is run inside a browser.

• When we run an applet using an applet viewer, the applet viewer provides the title and border.

• Other components can be added to a Panel object by its add( )method (inherited from Container).

• We can position and resize the components of a panel manually using the setLocation( ), setSize( ), setPreferredSize( ), or setBounds( ) methods defined by Component.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 14: Gui programming (awt)

Window• Window class creates a top-level window.

• A top-level window is not contained within any other object; it sits directly on the desktop.

• Generally, we won’t create Window objects directly. Instead, we use a subclass of Window called Frame.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 15: Gui programming (awt)

Frame• It is a subclass of Window and has a title bar, menu bar, borders,

and resizing corners.

• Frame encapsulates what is commonly thought of as a “window.”

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 16: Gui programming (awt)

FrameConstructor:

public Frame ()public Frame (String Title)

Methods:public String getTitle ()public void setTitle (String Title)public void setVisibile(boolean Visibility)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 17: Gui programming (awt)

Commonly Used Methods of Component Class

• setBackground(): used to change the background color of a component.

public void setBackground ( Color c)Note: color is a helper class.

• setForeground(): used to change the foreground color of a component.

public void setForeground ( Font obj)• Font is represented by java.awt.Font.

public Font (String FontName, int Style, int Size)e.g. : Font f = (“Times New Roman”, Font.BOLD, 20);

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 18: Gui programming (awt)

• setBounds(): used to specify size and position of component in a container.public void setBounds (int left, int top, int width, int height)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 19: Gui programming (awt)

Commonly used methods of Container Class

• add(): used to add components to a container.public void add (Component c)

• setSize(): used to specify the size of a container.public void setSize(int width, int height)

• setLayout(): used to specify the layout manager for a container.public void setLayout (LayoutManager mgr)

• setVisible(boolean visibility): used to set the visibility of container.

public void setVisible (boolean visibility)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 20: Gui programming (awt)

Label• Used to describe other components or to display information on

a container.

Constructors:public Label()public Label (String s)

Methods:• public String getText(): used to display the text on a Label.• public void setText(): used to change the text.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 21: Gui programming (awt)

Button• Buttons are used to initiate action.

Constructor:public Button ()public Button (String Name)

Methods:public String getLabel()public void setLabel(String Name)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 22: Gui programming (awt)

TextField• Used to receive input and display the output/result.Constructor:

public TextField ()public TextField (String Text)public TextField (int No_of Chars)

Methods:public String getText ()public void setText (String Text)public void setEchoChar ( char x) public void setEditable (boolean editability)public boolean isEditable()

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 23: Gui programming (awt)

TextArea• Used to display multiple lines of output/result.Constructor:

public TextArea()public TextArea (String Text)public TextArea (int numLines, int numChars)public TextArea (String str, int numLines, int numChars, int sBars)

sBars Constants: (SCROLLBARS_NONE, SCROLLBARS_BOTH, SCROLLBARS_HORIZONTAL_ONLY, SCROLLBARS_VERTICAL_ONLY)

Methods:Supports all the methods of TextArea.void append(String str)void insert(String str, int index)void replaceRange(String str, int startIndex, int endIndex)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 24: Gui programming (awt)

Checkbox and RadioButtons• Checkbox and CheckboxGroup classes are used to create

RadioButtons.

public Checkbox (String Text)public Checkbox (String Text, Boolean State)

public Checkbox (String Text, Boolean State, CheckboxGroup cbg )public Checkbox (String Text, CheckboxGroup cbg, Boolean State, )

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 25: Gui programming (awt)

Methods

• boolean getState( )• void setState(boolean on)• String getLabel( )• void setLabel(String str)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 26: Gui programming (awt)

CheckboxGroup• Used to create a set of mutually exclusive check boxes in which

one and only one check box in the group can be checked at a time.

Constructor:public CheckboxGroup()

Methods:Checkbox getSelectedCheckbox( )void setSelectedCheckbox(Checkbox which)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 27: Gui programming (awt)

Menu Bars and Menus• Menu is implemented in AWT by the following classes:

MenuBar, Menu, and MenuItem.

• A menu bar displays a list of top-level menu choices. Each choice is associated with a drop-down menu.

• 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.

• Since Menu is a subclass of MenuItem, a hierarchy of nested submenus can be created.

• Checkable menu items are menu options of type CheckboxMenuItem and will have a check mark next to them when they are selected.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 28: Gui programming (awt)

Creating Menus• To create a menu bar, first create an instance of MenuBar. This class

only defines the default constructor.

• Next, create instances of Menu that will define the selections displayed on the bar. Following are the constructors for Menu:

Menu( ) throws HeadlessExceptionMenu(String optionName) throws HeadlessException

• Individual menu items are of type MenuItem. It defines these constructors:

MenuItem( ) throws HeadlessExceptionMenuItem(String itemName) throws HeadlessExceptionMenuItem(String itemName, MenuShortcut keyAccel) throws HeadlessException

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 29: Gui programming (awt)

• We can disable or enable a menu item by using the setEnabled( ) method.

void setEnabled (boolean enabledFlag)• If the argument enabledFlag is true, the menu item is enabled. If false,

the menu item is disabled.

• We can determine an item’s status by calling isEnabled( ). boolean isEnabled( )

• isEnabled( ) returns true if the menu item on which it is called is enabled. Otherwise, it returns false.

• We can change the name of a menu item by calling setLabel( ). We can retrieve the current name by using getLabel( ).

void setLabel(String newName)String getLabel( )

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 30: Gui programming (awt)

CheckboxMenuItem• We can create a checkable menu item by using a subclass of

MenuItem called CheckboxMenuItem. CheckboxMenuItem( ) throws HeadlessException

CheckboxMenuItem(String itemName) throws HeadlessExceptionCheckboxMenuItem(String itemName, boolean on) throws

HeadlessException

• We can obtain the status of a checkable item by calling getState( ). You can set it to a known state by using setState( ).

boolean getState( )void setState(boolean checked)

Note: HeadlessException is Thrown when code that is dependent on a keyboard, display, or mouse is called in an environment that does not support a keyboard, display, or mouse.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 31: Gui programming (awt)

Choice• The Choice class presents a pop-up menu of choices. • The current choice is displayed as the title of the menu.

Choice c = new Choice(); // Only default constructor availablec.add(“B. Tech.”); c.add(“BCA”); c.add(“B. Arch.”);

Methods:String getItem(int index)int getItemCount()String getSelectedItem()int getSelectedIndex()

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 32: Gui programming (awt)

List• The List class provides a compact, multiple-choice, scrolling

selection list. Constructors:

List( ) List(int numRows) List(int numRows, boolean multipleSelect)

Methods:void add(String name)void add(String name, int index)String getSelectedItem() String[] getSelectedItems()int getSelectedIndex() int[] getSelectedIndexes()

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 33: Gui programming (awt)

Layout Manager classesLayoutManager class Description

BorderLayout The border layout manager. Border layouts use five components: North, South, East, West, and Center

CardLayout The card layout manager. Card layouts emulate index cards. Only the one on top is showing.

GridLayout The grid layout manager. Grid layout displays components in a two-dimensional grid.

FlowLayout The flow layout manager. Flow layout positions components left to right, top to bottom.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 34: Gui programming (awt)

FlowLayout• Arranges the components in left to right, top to bottom fashion.• It is the default layout manager for Frame.

public FlowLayout ()public FlowLayout (int alignment)public FlowLayout (int alignment, int H_Gap, int V_Gap)

• Alignments are specified as:FlowLayout.LEFTFlowLayout.RIGHTFlowLayout.CENTER

• By default 5 pixels is used as horizontal and vertical gap between components.

FlowLayout fl = new FlowLayout (FlowLayout.CENTER, 30, 20);frm.setLayout(fl);

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 35: Gui programming (awt)

GridLayout• It divides a container into a grid of specified rows and columns.

Each to display one component.

• Size of component is changed according to the size of the cell.

public GridLayout (int row, int column)public GridLayout (int row, int column, int H_Gap, int V_Gap)

GridLayout gl = new GridLayout (3, 4); frm.setLayout (gl);

GridLayout gl1 = new GridLayout (3, 4, 20, 30); frm.setLayout (gl2);

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 36: Gui programming (awt)

BorderLayout• It divides the container into 5 regions ( NORTH, SOUTH,

EAST, WEST and CENTER).

• It is the default layout manager for Window.public BorderLayout()

• To add a component at a specific region, following method is used:

public void add ( Component c, int Region)Example:

Button btn = new Button(“OK”);frm.add( btn, BorderLayout.EAST);

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 37: Gui programming (awt)

CardLayout• It is used to arrange containers in the form of deck of cards.

Methods:first() / last()/ next()/ previous(): is used to make the first/ last/ next/ previous card visible.

show(): is used to make a specified card visible.public void show ( Container deck, String CardName)

• To give a name to the container while it is added to the deck:public void add ( Container card, String CardName)

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 38: Gui programming (awt)

Steps to Create a Frame-based Interface

1) Create a Frame object.2) Create Component Objects.3) Add the Component objects to Frame.4) Set the size of the Frame and make it visible.

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)

Page 39: Gui programming (awt)

My First Applicationimport java.awt.*;class MyFirstApp

{static TextField t1,t2,t3; static Button b1;public static void main(String arr[])

{Frame f = new Frame ("My Calculator");Label l1 = new Label (“1st Number"); Label l2 = new Label (“2nd Number");Label l3 = new Label ("Result");t1 = new TextField(20); t2 = new TextField(20);t3 = new TextField(20); t3.setEditable(false);b1 = new Button("Add");f.setLayout(new FlowLayout());f.add(l1); f.add(t1); f.add(l2); f.add(t2); f.add(l3); f.add(t3); f.add(b1);f.setSize(200,250); f.setVisible(true);

}}

Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)