Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java...

44
Java Programming Fourth Edition Chapter 14 Using Layout Managers and Events

Transcript of Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java...

Page 1: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming Fourth Edition

Chapter 14 Using Layout Managers and Events

Page 2: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 2

Objectives

•  Learn about layout managers •  Use JPanels to increase layout options •  Understand events and event handling •  Use the AWTEvent class methods •  Handle mouse events

Page 3: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 3

Learning About Layout Managers

•  Layout manager –  Controls size and position of Components inside a Container object

–  Assign to content pane or panel –  Interface classes –  Part of Java SDK –  Align components so that they don’t:

•  Crowd each other •  Overlap

Page 4: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 4

Learning About Layout Managers (continued)

•  Layout manager (continued) –  Arrange components within a Container –  Container can also be Container itself –  Assign layout managers within layout managers

•  Java platform-supplied layout managers –  FlowLayout and GridLayout –  BorderLayout and CardLayout –  GridBagLayout and BoxLayout

Page 5: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 5

Java Layout Managers

Page 6: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 6

Using BorderLayout

•  BorderLayout manager –  Default for all content panes –  Use with:

•  Container with five or fewer components •  Component containers can hold more components

–  Fill screen in regions •  North •  South •  East •  West •  Center

Page 7: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 7

The JDemoBorderLayout Application

Page 8: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 8

Using BorderLayout (continued)

•  Static import feature –  Allows static constant without class name import static java.awt.BorderLayout.*;

•  GUI component must be part of: –  Containment hierarchy

•  Tree of components •  Top-level container as its root

Page 9: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 9

Using BorderLayout (continued)

•  Create Container named con –  Set layout manager to BorderLayout con.setLayout(new BorderLayout());

•  To set layout manager setLayout(new BorderLayout()); Or this.setLayout(new BorderLayout());

•  Place object in south region of JApplet’s Container add(someButton, BorderLayout.SOUTH)

Page 10: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 10

Using FlowLayout

•  FlowLayout manager –  Arrange components in rows across width of Container

–  Add Component •  Place to right of previously added components in row •  If current row filled Component placed to start new

row –  Each Component retains preferred size

Page 11: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 11

Using FlowLayout (continued) •  Align Components with Container

FlowLayout.LEFT

FlowLayout.CENTER FlowLayout.RIGHT

–  If alignment not specified • Components center-aligned

Page 12: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 12

The JDemoFlowLayout Applet

Page 13: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 13

Using FlowLayout (continued) •  invalidate()

–  Marks container as needing to be laid out •  validate()

–  Causes components to be rearranged based on newly assigned layout

Page 14: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 14

Using GridLayout

•  GridLayout manager class –  Arrange components into equal rows and columns

•  Create GridLayout object –  Indicate numbers of rows and columns

•  Specify rows first and then columns –  Container surface divided into grid

•  Establish GridLayout con.setLayout(new GridLayout(4, 5));

Page 15: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 15

Using GridLayout (continued)

•  Establish GridLayout within JApplet this.setLayout(new GridLayout(4, 5));

Or setLayout(new GridLayout(4, 5)); •  Establish GridLayout with three horizontal rows,

two vertical columns, and vertical gaps of five pixels each private GridLayout layout = new GridLayout(3, 2, 5, 5);

•  Can use 0 for number of columns or rows

Page 16: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 16

The JDemoGridLayout Applet

Page 17: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 17

Output of the JDemoGridLayout Applet

Page 18: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 18

Using CardLayout

•  CardLayout manager –  Generates stack of containers or components –  One on top of another –  Each component in group referred to as card –  Multiple components share same display space

Page 19: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 19

Using CardLayout (continued)

•  Create card layout with one of two constructors CardLayout()

•  Creates card layout without horizontal or vertical gap CardLayout(int hgap, int vgap)

•  Creates card layout with specified horizontal and vertical gaps

–  Add component to content pane add(aString, aContainer);

Page 20: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 20

The JDemoCardLayout JApplet

Page 21: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 21

Using Advanced Layout Managers

•  GridBagLayout manager –  Add Components to precise locations within grid –  Indicate specific Components should span multiple

rows or columns within grid –  Must set position and size for each component –  Must customize one or more GridBagConstraints

objects •  BoxLayout manager

–  Allows multiple components to be laid out either vertically or horizontally

Page 22: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 22

Using JPanels to Increase Layout Options

•  Using JPanels within JPanels can create infinite variety of screen layouts

•  Create JPanel object –  Constructors

JPanel()

JPanel(LayoutManager layout)

JPanel(Boolean isDoubleBuffered) JPanel(LayoutManager layout, Boolean isDoubleBuffered)

Page 23: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 23

Output of the Checkerboard Application

Page 24: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 24

Understanding Events and Event Handling

•  Events –  Objects that user initiates

•  EventObject –  Parent class for all event objects –  Descends from Object class –  Parent of AWTEvent class

•  Parent of ActionEvent and ComponentEvent

Page 25: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 25

The Inheritance Hierarchy of Event Classes

Page 26: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 26

Understanding Events and Event Handling (continued)

•  ActionEvents –  Focus on changes in a component

•  MouseEvents –  Focus on what user does manually with mouse

•  Computer’s operating system notifies user when AWTEvent occurs –  Can ignore AWTEvents –  Must implement appropriate interface for your class

•  To receive events

Page 27: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 27

Examples of User Actions and Their Resulting Event Types

Page 28: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 28

Understanding Events and Event Handling (continued)

•  Event handler –  Interface method such as actionPerformed() –  Called automatically when appropriate event occurs

•  Adapter class –  Implements all methods in an interface

•  Provides empty body for each method

•  Extend adapter class –  Write only methods you want to use

•  Don’t bother creating empty methods for others

Page 29: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 29

Understanding Events and Event Handling (continued)

•  Create event handler –  When writing code for listener methods

•  Tell class how to handle events •  Register instance of class with component that

event affects –  For any <name>Listener object.add<name>Listener(Component)

Page 30: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 30

An Event-Handling Example: KeyListener

•  KeyListener interface –  Receive actions user initiates from keyboard

•  KeyListener contains three methods: keyPressed()

keyTyped() •  Discover which character was typed •  Does not execute calls from action keys

keyReleased() •  Does not take action while user holds down key

Page 31: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 31

Events with Their Related Listeners and Handlers

Page 32: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 32

An Event-Handling Example: KeyListener (continued)

•  KeyEvent class –  Contain virtual key codes

•  Represent keyboard keys that have been pressed •  Virtual key code constants have names such as

VK_SHIFT and VK_ALT

Page 33: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 33

Using AWTEvent Class Methods

•  AWTEvent classes –  Contain methods

•  Determine nature of and facts about event –  All Components define methods

• addComponentListener() • addFocusListener() • addMouseListener() • addMouseMotionListener()

Page 34: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 34

Using AWTEvent Class Methods (continued)

•  Call Event class methods –  Use object-dot-method format

• InputEvent named inEvent and integer named modInt

modInt = inEvent.getModifiers();

•  Use event object within handler method to obtain information –  Add dot and appropriate method name

•  Use any methods that belong to any superclass of an event

Page 35: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 35

Useful Event Class Methods

Page 36: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 36

Handling Mouse Events

•  MouseMotionListener interface: mouseDragged() and mouseMoved()

•  Detect mouse being rolled or dragged across component surface

•  MouseListener interface: mousePressed(), mouseClicked(), and mouseReleased()

•  Analogous to keyboard event methods mouseEntered() and mouseExited()

•  User positions mouse over component (entered) •  Or moves mouse off component (exited)

Page 37: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 37

MouseListener Methods

Page 38: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 38

MouseMotionListener Methods

Page 39: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 39

Handling Mouse Events (continued)

•  MouseInputListener interface –  Implements all methods in both MouseListener

and MouseMotionListener interfaces –  Has no methods of its own –  Handles many different types of mouse events

•  MouseEvent –  Type of event generated by mouse manipulation –  Contains instance methods and fields

•  Useful in describing mouse-generated events

Page 40: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 40

The Inheritance Hierarchy of the MouseEvent Class

Page 41: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 41

You Do It

•  Using BorderLayout •  Using fewer than five components with the BorderLayout manager

•  Using FlowLayout •  Using CardLayout •  Viewing all the cards in CardLayout

Page 42: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 42

You Do It (continued)

•  Using JPanels to achieve complex layouts •  Implementing KeyListener •  Using the getSource() method to determine an

event •  Using MouseEvents

Page 43: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 43

Summary

•  Layout manager –  Object that controls size and position of components

inside a Container object –  BorderLayout –  FlowLayout –  GridLayout –  CardLayout –  GridBagLayout

•  Use JPanels within other JPanels –  Create infinite variety of screen layouts

Page 44: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch14.pdf · 2009. 11. 24. · Java Programming, Fourth Edition 29 Understanding Events and Event Handling (continued)

Java Programming, Fourth Edition 44

Summary (continued)

•  Events are Objects that user initiates •  Implement appropriate listener interface for your

class •  Event handlers

–  Interface methods automatically called when event occurs

•  KeyListener interface –  Handles keyboard events

•  MouseListener interface –  Handles mouse events