1 Java GUIs Dr. Randy M. Kaplan. 2 Constructing User Interfaces From a functionality standpoint there are two things that every program must implement.

Slides:



Advertisements
Similar presentations
1 Graphical User Interface (GUI) Applications Abstract Windowing Toolkit (AWT) Events Handling Applets.
Advertisements

Graphic User Interfaces Layout Managers Event Handling.
CMSC 341 Building Java GUIs. 09/26/2007 CMSC 341 GUI 2 Why Java GUI Development? Course is about Data Structures, not GUIs. We are giving you the opportunity.
Corresponds with Chapter 12
Fall 2007CS 225 Graphical User Interfaces Event Handling Appendix C.
1 Chapter 7 Graphics and Event Handling. 2 Overview The java.awt and javax.swing packages and their subpackages support graphics and event handling. Many.
Event Handling Events and Listeners Timers and Animation.
Graphical User Interfaces (GUIs) GUI: An application that uses graphical objects to interact with users GUI applications consist of: –Events: A user or.
1 GUI Elements in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Chapter 13: Advanced GUIs and Graphics J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition.
PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra.
A.k.a. GUI’s.  If you want to discuss your Lab 2 grade come see me this week. ◦ Office: 436 ERB. One hour prior to class ◦ Open to Appointments MWF 
Java Programming Chapter 10 Graphical User Interfaces.
Chapter 13 Advanced GUIs and Graphics. Chapter Objectives Learn about applets Explore the class Graphics Learn about the class Font Explore the class.
Java Software Solutions Lewis and Loftus Chapter 10 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Graphical User Interfaces --
Java Programming: From Problem Analysis to Program Design, 4e Chapter 12 Advanced GUIs and Graphics.
Applets and Frames CS 21a: Introduction to Computing I First Semester,
Java Programming: Advanced Topics 1 Common Elements of Graphical User Interfaces Chapter 6.
Dale Roberts GUI Programming using Java - Event Handling Dale Roberts, Lecturer Computer Science, IUPUI Department of Computer.
10/24/20151 Java GUI Programming. 10/24/20152 What is a GUI? Java has standard packages for creating custom Graphical User Interfaces Some of the fundamental.
Graphical User Interface Components: Part 1 Chapter 11.
Ch 3-4: GUI Basics Java Software Solutions Foundations of Program Design Sixth Edition by Lewis & Loftus Coming up: GUI Components.
 2002 Prentice Hall, Inc. All rights reserved Introduction Graphical User Interface (GUI) –Gives program distinctive “look” and “feel” –Provides.
– Advanced Programming P ROGRAMMING IN Lecture 21 Introduction to Swing.
1 Outline 1 Introduction 2 Overview of Swing Components 3 JLabel 4 Event Handling 5 TextFields 6 How Event Handling Works 7 JButton 8 JCheckBox and JRadioButton.
Graphic User Interface. Graphic User Interface (GUI) Most of us interact with computers using GUIs. GUIs are visual representations of the actions you.
1 Unit 5 GUI Aum Amriteshwaryai Namah. 2 Overview Shall learn how to reuse the graphics classes provided by Java for constructing Graphical User Interface.
Graphics and Event-Driven Programming in Java John C. Ramirez Department of Computer Science University of Pittsburgh.
Copyright © 2002, Systems and Computer Engineering, Carleton University c-Gui3.ppt * Object-Oriented Software Development Part 18-c Building.
Timer class and inner classes. Processing timer events Timer is part of javax.swing helps manage activity over time Use it to set up a timer to generate.
Object Oriented Programming Engr. M. Fahad Khan Lecturer, Software Engineering Department University of Engineering & Technology, Taxila.
Applets and Frames. Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved L14: GUI Slide 2 Applets Usually.
Object-Oriented Program Development Using Java: A Class-Centered Approach, Enhanced Edition.
Java Programming Applets. Topics Write an HTML document to host an applet Understand simple applets Use Labels with simple AWT applets Write a simple.
Computer Science [3] Java Programming II - Laboratory Course Lab 4: Common GUI Event Types and Listener Interfaces Layout Mangers Faculty of Engineering.
1 / 67 COP 3503 FALL 2012 SHAYAN JAVED LECTURE 14 Programming Fundamentals using Java 1.
Lec.10 (Chapter 8 & 9) GUI Jiang (Jen) ZHENG June 27 th, 2005.
The Abstract Window Toolkit (AWT) supports Graphical User Interface (GUI) programming. AWT features include: a rich set of user interface components; a.
Java GUI. Graphical User Interface (GUI) a list a button a text field a label combo box checkbox.
Object Oriented Programming.  Interface  Event Handling.
Introduction to Java Chapter 9 - Graphical User Interfaces and Applets1 Chapter 9 Graphical User Interfaces and Applets.
Graphical User Interface Components: Part 1 Chapter 11.
Creating a Window. A basic window in Java is represented by an object of the class Window in the package java.awt.
1 Layout Managers Layout managers –Provided for arranging GUI components –Provide basic layout capabilities –Processes layout details –Programmer can concentrate.
 Figure illustrates a hierarchy containing many event classes from the package java.awt.event.  Used with both AWT and Swing components.  Additional.
Chapter 10 - Writing Graphical User Interfaces1 Chapter 10 Writing Graphical User Interfaces.
Graphical User Interface (GUI)
1 Chapter 13 – More GUI Components Introduction Graphical User Interface (GUI) –Gives program distinctive “look” and “feel” –Provides users with basic.
1 Lecture 8: User Interface Components with Swing.
Jozef Goetz Credits: Copyright  Pearson Education, Inc. All rights reserved. expanded by J. Goetz, 2016.
Sep 181 Example Program DemoTranslateEnglishGUI.java.
Introduction to GUI Programming in Java: Frames, Simple Components, and Layouts.
Getting Started with GUI Programming Chapter 10 CSCI 1302.
CIS 270—Application Development II Chapter 11—GUI Components: Part I.
Java Programming Fifth Edition Chapter 13 Introduction to Swing Components.
GUIs & Event-Driven Programming Chapter 11 Review.
Prepared by: Dr. Abdallah Mohamed, AOU-KW Unit7: Event-driven programming 1.
CSC 205 Programming II Lecture 5 AWT - I.
Welcome To java
Introduction to Graphics
Aum Amriteshwaryai Namah
Appendix I GUI Components and Event Handling
Ellen Walker Hiram College
Chap 7. Building Java Graphical User Interfaces
Chapter 13: Advanced GUIs and Graphics
Graphical User Interfaces -- Introduction
IFS410: Advanced Analysis and Design
Advanced GUIs and Graphics
Graphical User Interface
Presentation transcript:

1 Java GUIs Dr. Randy M. Kaplan

2 Constructing User Interfaces From a functionality standpoint there are two things that every program must implement  Interaction  Computation

3 Constructing User Interfaces As Java evolved as a browser based language, it provides a rich set of tools for interacting with a program user Originally these tools were embodied in the java.awt or Abstract Windowing Toolkit AWT is platform dependent  Look and feel is determined by the platform Java 2 incorporated the Swing components  Look and feel is independent of the platform

4 Constructing User Interfaces Swing Component Advantages  “Lightweight”  Written entirely in Java  Not weighed down by platform specific issues

5 Model-View-Controller Architecture Swing  Loosely based on the Model-View-Controller architecture (MVC)  Model Stores data which defines the component  View Creates the visual representation of the component from the data in the model  Controller Deals with the interaction with the component and modifies the model and/or the view in response to a user action as necesary

6 Basics – 1 A CONTAINER is a collection of related components The content pane is a container that will be used to contain the interface components Components are added to a container with the add method

7 Creating a Window A basic window in Java is represented by an object of the class Window in the package java.awt Objects of the class are hardly ever used directly because  Borders and title bars are pretty much always part of a window and the Class Window does not provide these JFrame in javax.swing includes these features and others

8 JFrame Hierarchy

9 Displaying an Application Window

10 Components and Containers Component  Represents a graphical entity that can be displayed on the screen  Any object of a class that is a subclass of a Component

11 Key Classes in the Window Hierarchy JFrame  Basic Java Application Window  Has Title bar Provision for adding menu  Subclass this class to create a window class specific to your application

12 Key Classes in the Window Hierarchy JDialog  Define a dialog window  Enter data into a program in barious ways JApplet  Basic class for a Java 2 applet  All Java 2 applets will have this class as a base class  Drawing is possible in a JApplet  Add menus and other components

13 Key Classes in the Window Hierarchy JComponent  Subclasses of JComponent define a range of standard components

14 Window Panes Add components or draw in a window displayed from a JFrame object –  You add the components or draw on a window pane that is managed by the JFrame object Window panes are objects that are containers which represent an area of a window Window panes come in several different types

15 Window Panes

16 Window Panes The area below the title bar in a JFrame corresponds to a JRootPane object The JRootPane object contains another pane – the layeredPane

17 Window Panes The area below the title bar in a JFrame corresponds to a JRootPane object The layeredpane area corresponds to the area occupied by JRootPane If there is a menu bar it is managed by the layeredPane

18 Window Panes The area below the menu bar corresponds to the contentPane object The contentPane object is where components are typically placed

19 Window Panes The layeredPane object has special properties Advanced applications may permit groups of components to be managed in separate layers that overlay one another within the pane Layers are displayed in order from back to front

20 Window Panes One additional pane, the glassPane object, corresponds to the JRootPane area The glassPane displays on top of all the other panes The glassPane is used to display components that will always remain on top

21 JFrame Class Methods to access panes MethodDescription getRooPane()Returns the root pane as type JRootPane getLayeredPane()Returns the root pane as type JLayeredPane getContentPane()Returns the content pane as type Container. This is the method that you will use most frequently, since components will normally be added to this pane getGlassPane()Returns the glass pane as type component

22 Component Attributes The component class defines attributes that record the following information about a component object  Position  Name  Size  Foreground color  Background color  Cursor  Enabled  Visible

23 Methods for Size and Position setBounds(int x, int y, int width, int height) setBounds(Rectangle rect) Rectangle getBounds setSize(Dimension d) Dimension getSize() setLocation(int x, int y) setLocation(Point p) Point getLocation()

24 Basics – 2 JComponent is the superclass to most Swing components This class defines the common attributes and behaviors of all subclasses of JComponent

25 Basics – 3 JLabel  Subclass of JComponent  Displays a single line of read-only text Image Text and image

26 Basics – 4 Basic Interface Construction

27 Using Containers A container is any class with the Container class as its base class All Swing components are containers The Container class is the direct base class for the Window class which gives the Window class the ability to contain other object Container is called an abstract class which means that instances of the Container class cannot be created

28 Using Containers Components within a container are displayed within the area of the container A container controls how its embedded components are laid out by means of a layout manager

29 Container Class Basic Methods  int getComponent() Returns a count of the number of components contained by the current component  Component getComponent(int index) Returns the component identified by the index value  Component [] getComponents() Returns an array of components in the current container

30 Container Class Adding Components  Components are recorded in an array within the Container object  The array is increased in size to accommodate as many components as are present  To add a component to a contained use the method add()

31 Add Methods Component add(Component c)  Add the component c to the end of the list of components stored in the container Component add(Component c, int index)  Add the component c to the list of components in the container at the position specified by index  If index == -1 then the component is added to the end of the container void add (Component c, Object constraints) void add (Component c, Object constraints, int index)

32 Basics – 4 Basic Interface Construction A class is going to be defined that will extend the functionality of a graphics element container like a JFrame

33 Basics – 5 Basic Interface Construction The content pane contains what will be displayed. We need to retrieve it so we can use it to display our graphical components

34 Basics – 6 Basic Interface Construction Graphics elements like JLabel are created and added to the content pane

35 Basics – 7 Basic Interface Construction The size of the frame is set and the state of the frame is set to visible

36 Basics – 8 Basic Interface Construction A new instance of the class is created and the creation of it causes the instance of the JLabel to be displayed

37 Events – 1 The previous class definition showed the basic elements of how a user interface element is added to a class method Labels are static non-interactive interface elements Besides being able to display elements we would also like to be able to capture interface element interactions

38 Event-Driven Progams

39 Events – 2 Event Handling  Three Parts Event source Event object Event listener

40 Events – 3 Event Handling  Three Parts Event source  The particular interface component with which the user interacts Event object Event listener

41 Events – 4 Event Handling  Three Parts Event source Event object  Encapsulates information about the event that occurred  Reference to the event source  Specific event information that is required by the event listener Event listener

42 Events – 5 Event Handling  Three Parts Event source Event object Event listener  Receives an event object when it is notified of the event  Uses the event object to respond to the event

43 Events – 6 Two Key Programmer Responsibilities  Register a listener for the event  Implement an event handler for the event

44 Events What happens when an event occurs?  A user clicks a button in the GUI for your program  The button is the source of this event  The event generated as a result of the mouse click is associated with the JButton object in your program that represents the button on the screen

45 Events When the button is clicked –  A new object is created  The object represents and identifies this event  For a button, the object is an instance of the class ActionEvent  The object will contain information about the event and its source Any event that is passed to a Java program will be represented by a particular event object The object will be passed as an argument to the method that is to handle the event

46 Events

47 Events The event object corresponding to the button click will be passed to any listener object that has previously registered an interest in this kind of event A listener object is simply an object that listens for particular events A listener object is also called a target for an event

48 Defining a Listener Objects of any class can be made listeners by implementing a listener interface There are many kinds of listener interfaces that cater to the different kinds of events Each kind of listener interface defines particular methods for receiving the events that that listener has been designed to deal with In addition to implementing the listener, the listener has to be connected to its source

49 Kinds of Events Low-level Events  Events arising from the keyboard or from the mouse  Events associated with operation on a window – such as reducing it to an icon or closing it Semantic Events  Specific component related events Pressing a button by clicking it to cause some program action Adjusting a scrollbar

50 Low-level Events FocusEvent  Objects of this class represent events that originate when a component gains or loses focus MouseEvent  Objects of this class represent events that result from user action with the mouse such as moving the mouse or pressing a mouse button KeyEvent  Objects of this class represent events that arise from pressing keys on the keyboard WindowEvent  Objects of this class represent events that relate to a window such as activating or deactiviating a window, reducing a window to its icon or closing a window

51 JTextField and JPasswordField – 1

52 JTextField and JPasswordField – 2 Single-line areas Text is entered by a user Text can be displayed A JPasswordField shows that a character was typed but hides the characters When the user presses the ENTER key in a JTextField or JPasswordField an event occurs

53 JTextField and JPasswordField – 3 Declare the text fields and add the fields to the container.

54 JTextField and JPasswordField – 4 Each of the field gets an event handler

55 JTextField and JPasswordField – 5 The main gets specified as before. Declare a new instance which causes the code of the instance to run

56 JTextField and JPasswordField - 6

57 JTextField and JPasswordField – 7 The listener that is used is a new class that extends the functionality of the ActionListener – the main class for implementing event Listeners

58 JTextField and JPasswordField – 8 actionPerformed is an abstract method that is defined for ActionListener. This abstract method is invoked when an event occurs. It must be defined for the listener in order to respond to the event that occurs

59 JTextField and JPasswordField – 8 When actionPerformed is invoked, it is pass event, an object that contains information about the event that just occurred. It is this object that is examined in the code that follows to determine what actually occurred in the event

60 JTextField and JPasswordField – 9 The getSource method returns a reference to the interface object involved in the event. We can use this reference to make decisions about how to respond to the event

61 JTextField and JPasswordField – 10 We can retrieve the specific command that occurred in an event with the getActionCommand() method

62 Event Listeners Each type of event has its associated listener  Action events are handled by ActionListeners  MouseEvents are handled by MouseListeners  Key events are handled by KeyListeners

63 Event Handling – 1 Let’s consider event handling in more detail There are two things that are important to keep in mind when writing code to handle events These are:  Getting an event handler registered  Connecting the GUI component to the code that will execute when an action involving it is executed

64 Event Handling – 2 An event has a listener registered for it using code like the following –  textField1.addActionListener( handler );  textField2.addActionListener( handler );  textField3.addActionListener( handler ); Every JComponent has an object of class EventListenerList called listenerList as an instance variable All registered listeners are stored in the listenerList

65 Event Handling – 3 When the statement,  textField1.addActionListener( handler ); is executed, a new entry is placed in the listenerList for textField1 Both a reference to the listener object and type of listener are recorded

66 Event Handling – 4 Types of Listeners  How does a GUI component know to call the correct event handling method?  Every component supports several event types Mouse events Key events Action events  When an event occurs, the event is dispatched only to those listeners of the appropriate type  The dispatch simply is calling the event handling method for each registered listener for that event type

67 Event Handling – 5 Each event  Has a corresponding event-listener interface  ActionEvents Are handled by ActionListeners  MouseEvents Are handled by MouseListeners  KeyEvents Are handled by KeyListeners

68 Event Handling – 6 When an event occurs –  A user generates an interaction with a component  The component is handed a unique event ID The event ID specifies the event type that occurred  The GUI component uses the event ID to decide the type of listener In the case of an ActionEvent, the event is dispatched to every registered ActionListener’s actionPerformed method In the case of a MouseEvent, the event is dispatched to every registered MouseListener  The event ID of the MouseEvent determines which of the seven different mouse event handling methods are called

69 JButton A button is a component that a user clicks to trigger a specific action There are several different types of buttons –  Command buttons  Check boxes  Toggle buttons  Radio buttons

70 JButton When the ButtonTest program is run, a panel with two buttons is displayed

71 JButton plainButton = new JButton( "Plain Button" ); container.add( plainButton ); Icon bug1 = new ImageIcon( "c:\\javaprj\\bug1.gif" ); Icon bug2 = new ImageIcon( "c:\\javaprj\\bug2.gif" ); fancyButton = new JButton( "Fancy Button", bug1 ); fancyButton.setRolloverIcon( bug2 ); container.add( fancyButton );

72 JButton ButtonHandler handler = new ButtonHandler(); fancyButton.addActionListener( handler ); plainButton.addActionListener( handler ); Code that registers the event handlers for each of the buttons private class ButtonHandler implements ActionListener { public void actionPerformed( ActionEvent event ) { JOptionPane.showMessageDialog( null, "You pressed: " + event.getActionCommand() ); } The event handler shows a message dialog that displays the name of the button that was clicked

73 JCheckBox and JRadioButton Swing has three types of state buttons  JToggleButton Frequently used in toolbars  JCheckBox Individual boxes that can be checked  JRadioButton Groups of buttons in which only one can be set

74 JCheckBox A check box allows the state of this UI component to be set or unset The check box UI components are independent of one another

75 JCheckBox The event handler for these checkboxes contains the code to change the font characteristics of the text box private class CheckBoxHandler implements ItemListener { private int valBold = Font.PLAIN; private int valItalic = Font.PLAIN; // respond to checkbox events public void itemStateChanged( ItemEvent event ) { // process bold checkbox events if ( event.getSource() == bold ) if ( event.getStateChange() == ItemEvent.SELECTED ) valBold = Font.BOLD; else valBold = Font.PLAIN; // process italic checkbox events if ( event.getSource() == italic ) if ( event.getStateChange() == ItemEvent.SELECTED ) valItalic = Font.ITALIC; else valItalic = Font.PLAIN; // set text field font field.setFont( new Font( "Serif", valBold + valItalic, 14 ) ); }

76 JCheckBox private class CheckBoxHandler implements ItemListener { private int valBold = Font.PLAIN; private int valItalic = Font.PLAIN; // respond to checkbox events public void itemStateChanged( ItemEvent event ) { // process bold checkbox events if ( event.getSource() == bold ) if ( event.getStateChange() == ItemEvent.SELECTED ) valBold = Font.BOLD; else valBold = Font.PLAIN; // process italic checkbox events if ( event.getSource() == italic ) if ( event.getStateChange() == ItemEvent.SELECTED ) valItalic = Font.ITALIC; else valItalic = Font.PLAIN; // set text field font field.setFont( new Font( "Serif", valBold + valItalic, 14 ) ); } The type of listener required for the checkBox GUI component is an ITEMLISTENER

77 JCheckBox private class CheckBoxHandler implements ItemListener { private int valBold = Font.PLAIN; private int valItalic = Font.PLAIN; // respond to checkbox events public void itemStateChanged( ItemEvent event ) { // process bold checkbox events if ( event.getSource() == bold ) if ( event.getStateChange() == ItemEvent.SELECTED ) valBold = Font.BOLD; else valBold = Font.PLAIN; // process italic checkbox events if ( event.getSource() == italic ) if ( event.getStateChange() == ItemEvent.SELECTED ) valItalic = Font.ITALIC; else valItalic = Font.PLAIN; // set text field font field.setFont( new Font( "Serif", valBold + valItalic, 14 ) ); } When the state of a check box is changed, the method itemStateChanged is invoked

78 JCheckBox private class CheckBoxHandler implements ItemListener { private int valBold = Font.PLAIN; private int valItalic = Font.PLAIN; // respond to checkbox events public void itemStateChanged( ItemEvent event ) { // process bold checkbox events if ( event.getSource() == bold ) if ( event.getStateChange() == ItemEvent.SELECTED ) valBold = Font.BOLD; else valBold = Font.PLAIN; // process italic checkbox events if ( event.getSource() == italic ) if ( event.getStateChange() == ItemEvent.SELECTED ) valItalic = Font.ITALIC; else valItalic = Font.PLAIN; // set text field font field.setFont( new Font( "Serif", valBold + valItalic, 14 ) ); } We check the current state of each of the check boxes and set the font characteristics accordingly

79 JCheckBox private class CheckBoxHandler implements ItemListener { private int valBold = Font.PLAIN; private int valItalic = Font.PLAIN; // respond to checkbox events public void itemStateChanged( ItemEvent event ) { // process bold checkbox events if ( event.getSource() == bold ) if ( event.getStateChange() == ItemEvent.SELECTED ) valBold = Font.BOLD; else valBold = Font.PLAIN; // process italic checkbox events if ( event.getSource() == italic ) if ( event.getStateChange() == ItemEvent.SELECTED ) valItalic = Font.ITALIC; else valItalic = Font.PLAIN; // set text field font field.setFont( new Font( "Serif", valBold + valItalic, 14 ) ); } Lastly, the font of the field is set to change the visible characteristics of the font

80 Layouts You have seen the following code used  container.setLayout( new FlowLayout() ); This code specifies the type of layout that will be used to place the components in the display container What exactly is a flow layout?

81 Layouts Layouts managers are provided to arrange components on a container for presentation purposes The idea is that by providing these managers it is easier than specifying the exact positions of the components Programmers concentrate on basic look and feel and the layout manager takes care of the rest

82 Layouts Types of Layouts  FlowLayout Components are placed sequentially left to right in the order they were added Default layout manager for  Applet  Panel  JPanel  BorderLayout  GridLayout

83 Layouts Types of Layouts  FlowLayout  BorderLayout Arranges the components into five areas – North, South, East, West, and Center Default for JFrame  GridLayout

84 Layouts Types of Layouts  FlowLayout  BorderLayout  GridLayout Arranges the components into rows and columns

85 FlowLayout Most basic layout manager Components are placed left to right in the order they are added to the container When the edge of the container is reached, components are continued on the next line Components can be  Left aligned  Centered (default)  Right aligned

86 FlowLayout The next example creates three buttons in a FlowLayout Buttons are labeled  Left  Center  Right Clicking left  Sets the flow layout alignment to left Clicking right  Sets the flow layout alignment to right Clicking center  Sets the flow layout alignment to center

87 FlowLayout Left Aligned Centered Right Aligned

88 FlowLayout The “container” is a JFrame

89 FlowLayout Create the layout object

90 FlowLayout Get the container’s content pane

91 FlowLayout Set the layout to be a flowlayout (set the container’s layout)

92 FlowLayout Setting up a button Create the new button

93 FlowLayout Setting up a button “On the fly”, create an instance of a listener class. This is called an “inner class” because it is defined with another class It is “anonymous” because it is defined ONLY for this button

94 FlowLayout Setting up a button The action to be performed is to set the layout’s alignment – in this case to left aligned

95 FlowLayout Setting up a button The layout if forced to realign (visibly) due to this statement

96 FlowLayout Setting up a button Once the action has been defined for the button, it is added to the container

97 BorderLayout  Is the default layout for the contain pane  Arranges components into five regions NORTH SOUTH EAST WEST CENTER  Up to 5 components can be added to a BorderLayout  The component placed in a region can actually be another container to contain other components

98 BorderLayout Schematic View of Regions North South EastWestCenter As tall as component placed in the region As wide as the component placed in the region

99 BorderLayout Schematic View of Regions North South Center If the EAST and WEST regions are not occupied, the center region expands to fill the regions

100 BorderLayout Schematic View of Regions EastWestCenter If the NORTH and SOUTH regions are not occupied, EAST and WEST expand vertically

101 BorderLayout Example Horizonal gap between components Vertical gap between components Default gap is 0 (ZERO) pixels

102 GridLayout Divides the container into a grid Components are laid out in rows and columns Every component in a grid layout has the same width and height Components are added to a grid  Left to right  Top to bottom  Until the grid is full

103 GridLayout Example

104 GridLayout Create two layouts

105 GridLayout The first layout has 2 rows and 3 columns, and the inter row/column spacing is 5 pixels

106 GridLayout The second layout contains 3 rows and 2 columns and the inter row/column spacing is 0 pixels

107 GridLayout The buttons are added to the container here

108 GridLayout The total dimensions of the container are defined here The buttons of the layout are sized according to the total dimension

109 GridLayout Changing the dimension to 500 x 500

110 Panels When a complex GUI is designed  It is desirable to place components in an exact location  Complex GUI’s often consist of multiple PANELS  Components within a panel are arranged in a specific layout

111 Example Get the containing content frame

112 Example Create and array to hold 5 buttons

113 Example Create the panel that will contain the buttons

114 Example Set the layout of the panel containing the buttons to be a 1 row x # of buttons grid layout

115 Example Create 5 buttons and add them to the panel that contains them

116 Example Add the panel to the frame in the southern position

117 Adapter Classes Many event-listener classes provide multiple methods  For example MouseListener MouseMotionListener It is not always desirable to define every method in an event listener interface

118 Adapter Classes For example  When a windowed application is terminated A method named windowClosing is invoked from the interface WindowListener WindowListener specifies seven window-event handling methods

119 Adapter Classes In order to avoid implementing all of the listener methods Java provides adapter classes An adapter class  Implements an interface  Provides a default implementation Usually has an empty body  Can be extended with specific functionality when required

120 Adapter Classes Event Adapter Class  ComponentAdapter  ContainerAdapter  FocusAdapter  KeyAdapter  MouseAdapter  MouseMotionAdapter  WindowAdapter Implements Interface  ComponentListener  ContainerListener  FocusListener  KeyListener  MouseListener  MouseMotionListener  WindowListener

121 Example We add a mouse motion listener and define an instance of a class MouseMotionAdapter to define functionality for the dragging of the mouse. xValue and yValue will record the current position of the mouse

122 Example The repaint() method causes the frame to be redrawn and this is accomplished by the paint() method The paint() method draws a small oval at the recorded xValue and yValue

123 Class Exercise Write Java code to create the interface shown below (do not worry about its functionality)