1 
Chapter 14 Event-Driven 
Programming 
Chapter 12 GUI Basics 
Chapter 14 Event-Driven Programming 
Chapter 15 Creating User Interfaces 
§10.2, “Abstract Classes,” in Chapter 10 
Chapter 13 Graphics 
Chapter 16 Applets and Multimedia 
§10.4, “Interfaces,” in Chapter 10
2 
Objectives 
 To start with event-driven programming with a simple example 
(§14.1). 
 To explain the concept of event-driven programming (§14.2). 
 To understand events, event sources, and event classes (§14.2). 
 To declare listener classes and write the code to handle events 
(§14.3). 
 To register listener objects in the source object (§11.3). 
 To understand how an event is handled (§14.3). 
 To write programs to deal with ActionEvent (§14.3). 
 To write programs to deal with MouseEvent (§14.4). 
 To write programs to deal with KeyEvent (§14.5). 
 To use the Timer class to control animations (§14.6 Optional).
3 
Procedural vs. Event-Driven 
Programming 
 Procedural programming is executed in 
procedural order. 
 In event-driven programming, code is executed 
upon activation of events.
4 
Taste of Event-Driven Programming 
 The example displays a button in the frame. A 
message is displayed on the console when a button 
is clicked. 
SSiimmpplleeEEvveennttDDeemmoo 
RRuunn
5 
Events 
 An event can be defined as a type of signal 
to the program that something has 
happened. 
 The event is generated by external user 
actions such as mouse movements, mouse 
clicks, and keystrokes, or by the operating 
system, such as a timer.
6 
Event Classes
7 
Event Information 
An event object contains whatever properties are 
pertinent to the event. You can identify the source object 
of the event using the getSource() instance method in 
the EventObject class. The subclasses of EventObject 
deal with special types of events, such as button actions, 
window events, component events, mouse movements, 
and keystrokes. Table 14.1 lists external user actions, 
source objects, and event types generated.
8 
Selected User Actions 
Source Event Type 
User Action Object Generated 
Click a button JButton ActionEvent 
Click a check box JCheckBox ItemEvent, ActionEvent 
Click a radio button JRadioButton ItemEvent, ActionEvent 
Press return on a text field JTextField ActionEvent 
Select a new item JComboBox ItemEvent, ActionEvent 
Window opened, closed, etc. Window WindowEvent 
Mouse pressed, released, etc. Component MouseEvent 
Key released, pressed, etc. Component KeyEvent
+actionPerformed(event: ActionEvent) 
9 
The Delegation Model 
source: SourceClass 
+addXListener(listener: XListener) 
listener: ListenerClass 
User 
Action 
Trigger an event 
XListener 
+handler(event: XEvent) 
Register by invoking 
source.addXListener(listener); 
(a) A generic source component 
with a generic listener 
source: JButton 
+addActionListener(listener: ActionListener) 
ActionListener 
listener: CustomListenerClass 
Register by invoking 
source.addActionListener((b) A JButton source component listener); 
with an ActionListener
Keep it a list 
10 
Internal Function of a Source 
Component 
source: SourceClass 
+addXListener(XListener listener) 
Keep it a list 
event: XEvent listener1 
listener2 
… 
listenern 
(a) Internal function of a generic source object 
+handler( 
Invoke 
listener1.handler(event) 
listener2.handler(event) 
… 
listenern.handler(event) 
An event is 
triggered 
source: JButton 
+addActionListener(ActionListener listener) 
event: 
ActionEvent 
(b) Internal function of a JButton object 
listener1 
listener2 
… 
listenern 
+handler( 
Invoke 
listener1.actionPerformed(event) 
listener2.actionPerformed(event) 
… 
listenern.actionPerformed(event) 
An event is 
triggered
11 
The Delegation Model: Example 
JButton jbt = new JButton(OK); 
ActionListener listener = new OKListener(); 
jbt.addActionListener(listener);
12 
Selected Event Handlers 
Event Class Listener Interface Listener Methods (Handlers) 
ActionEvent ActionListener actionPerformed(ActionEvent) 
ItemEvent ItemListener itemStateChanged(ItemEvent) 
WindowEvent WindowListener windowClosing(WindowEvent) 
windowOpened(WindowEvent) 
windowIconified(WindowEvent) 
windowDeiconified(WindowEvent) 
windowClosed(WindowEvent) 
windowActivated(WindowEvent) 
windowDeactivated(WindowEvent) 
ContainerEvent ContainerListener componentAdded(ContainerEvent) 
componentRemoved(ContainerEvent) 
MouseEvent MouseListener mousePressed(MouseEvent) 
mouseReleased(MouseEvent) 
mouseClicked(MouseEvent) 
mouseExited(MouseEvent) 
mouseEntered(MouseEvent) 
KeyEvent KeyListener keyPressed(KeyEvent) 
keyReleased(KeyEvent) 
keyTypeed(KeyEvent)
13 
java.awt.event.ActionEvent 
java.awt.event.ActionEvent 
+getActionCommand(): String 
+getModifiers(): int 
+getWhen(): long 
Returns the command string associated with this action. For a 
button, its text is the command string. 
Returns the modifier keys held down during this action event. 
Returns the timestamp when this event occurred. The time is 
the number of milliseconds since January 1, 1970, 00:00:00 
GMT. 
java.util.EventObject 
+getSource(): Object 
Returns the object on which the event initially occurred. 
java.awt.event.AWTEvent
14 
Inner Class Listeners 
A listener class is designed specifically to 
create a listener object for a GUI 
component (e.g., a button). It will not be 
shared by other applications. So, it is 
appropriate to define the listener class 
inside the frame class as an inner class.
15 
Inner Classes 
Inner class: A class is a member of another class. 
Advantages: In some applications, you can use an 
inner class to make programs simple. 
 An inner class can reference the data and 
methods defined in the outer class in which it 
nests, so you do not need to pass the reference 
of the outer class to the constructor of the inner 
class. 
SShhoowwIInnnneerrCCllaassss
16 
Inner Classes, cont. 
public class Test { 
... 
} 
public class A { 
... 
} 
public class Test { 
... 
// Inner class 
public class A { 
... 
} 
} 
(a) 
(b) 
// OuterClass.java: inner class demo 
public class OuterClass { 
private int data; 
/** A method in the outer class */ 
public void m() { 
// Do something 
} 
// An inner class 
class InnerClass { 
/** A method in the inner class */ 
public void mi() { 
// Directly reference data and method 
// defined in its outer class 
data++; 
m(); 
} 
} 
} 
(c)
17 
Inner Classes (cont.) 
 Inner classes can make programs simple and 
concise. 
 An inner class supports the work of its 
containing outer class and is compiled into a 
class named 
OuterClassName$InnerClassName.class. For 
example, the inner class InnerClass in 
OuterClass is compiled into 
OuterClass$InnerClass.class.
18 
Inner Classes (cont.) 
 An inner class can be declared public, 
protected, or private subject to the same 
visibility rules applied to a member of the 
class. 
 An inner class can be declared static. A static 
inner class can be accessed using the outer 
class name. A static inner class cannot access 
nonstatic members of the outer class
19 
Revising SimpleEventDemo Using 
Inner Classes 
SSiimmpplleeEEvveennttDDeemmooIInnnneerrCCllaassss 
RRuunn
20 
Anonymous Inner Classes 
 An anonymous inner class must always extend a superclass or 
implement an interface, but it cannot have an explicit extends 
or implements clause. 
 An anonymous inner class must implement all the abstract 
methods in the superclass or in the interface. 
 An anonymous inner class always uses the no-arg constructor 
from its superclass to create an instance. If an anonymous inner 
class implements an interface, the constructor is Object(). 
 An anonymous inner class is compiled into a class named 
OuterClassName$n.class. For example, if the outer class Test 
has two anonymous inner classes, these two classes are 
compiled into Test$1.class and Test$2.class.
21 
Anonymous Inner Classes (cont.) 
Inner class listeners can be shortened using anonymous 
inner classes. An anonymous inner class is an inner 
class without a name. It combines declaring an inner 
class and creating an instance of the class in one step. 
An anonymous inner class is declared as follows: 
new SuperClassName/InterfaceName() { 
// Implement or override methods in superclass or interface 
// Other methods if necessary 
}
22 
Revising SimpleEventDemo Using 
Anonymous Inner Classes 
SSiimmpplleeEEvveennttDDeemmooAAnnoonnyymmoouussIInnnneerrCCllaassss 
RRuunn
23 
Example: Handling Simple Action 
Events 
 Objective: Display two buttons OK and Cancel in 
the window. A message is displayed on the console 
to indicate which button is clicked, when a button 
is clicked. 
TTeessttAAccttiioonnEEvveenntt 
RRuunn
24 
Interaction Between Source and 
Listener 
: TestActionEvent jbtCancel: JButton 
jbtOK: JButton btListener: ButtonListener 
1. addActionListener 
2. addActionListener 
3. actionPerformed 
4. actionPerformed 
1. jbtOK registers btListener by invoking 
addActionListener(btListner). 
2. jbtCancel registers btListener by invoking 
addActionListener(btListner). 
3. jbtOK invokes btListener’s actionPerformed method to process 
an ActionEvnet. 
4. jbtCancel invokes btListener’s actionPerformed method to 
process an ActionEvent.
Objective: Demonstrate handling the window events. 
Any subclass of the Window class can generate the 
following window events: window opened, closing, 
closed, activated, deactivated, iconified, and 
deiconified. This program creates a frame, listens to 
the window events, and displays a message to 
indicate the occurring event. 
25 
Example: Handling Window Events 
TTeessttWWiinnddoowwEEvveenntt RRuunn
26 
Example: Multiple Listeners for a Single 
Source 
 Objective: This example modifies Listing 14.1 to 
add a new listener for each button. The two buttons 
OK and Cancel use the frame class as the listener. 
This example creates a new listener class as an 
additional listener for the action events on the 
buttons. When a button is clicked, both listeners 
respond to the action event. 
TTeessttMMuullttiipplleeLLiisstteenneerr RRuunn
27 
MouseEvent 
java.awt.event.MouseEvent 
+getButton(): int 
+getClickCount(): int 
+getPoint(): java.awt.Point 
+getX(): int 
+getY(): int 
Indicates which mouse button has been clicked. 
Returns the number of mouse clicks associated with this event. 
Returns a Point object containing the x and y coordinates. 
Returns the x-coordinate of the mouse point. 
Returns the y-coordinate of the mouse point. 
java.awt.event.InputEvent 
+getWhen(): long 
+isAltDown(): boolean 
+isControlDown(): boolean 
+isMetaDown(): boolean 
+isShiftDown(): boolean 
Returns the timestamp when this event occurred. 
Returns whether or not the Alt modifier is down on this event. 
Returns whether or not the Control modifier is down on this event. 
Returns whether or not the Meta modifier is down on this event 
Returns whether or not the Shift modifier is down on this event.
28 
Handling Mouse Events 
 Java provides two listener interfaces, 
MouseListener and MouseMotionListener, 
to handle mouse events. 
 The MouseListener listens for actions such as 
when the mouse is pressed, released, entered, 
exited, or clicked. 
 The MouseMotionListener listens for 
actions such as dragging or moving the 
mouse.
29 
Handling Mouse Events 
java.awt.event.MouseListener 
+mousePressed(e: MouseEvent): void 
+mouseReleased(e: MouseEvent): void 
+mouseClicked(e: MouseEvent): void 
+mouseEntered(e: MouseEvent): void 
+mouseExited(e: MouseEvent): void 
Invoked when the mouse button has been pressed on the 
source component. 
Invoked when the mouse button has been released on the 
source component. 
Invoked when the mouse button has been clicked (pressed and 
released) on the source component. 
Invoked when the mouse enters the source component. 
Invoked when the mouse exits the source component. 
java.awt.event.MouseMotionListener 
+mouseDragged(e: MouseEvent): void 
+mouseMoved(e: MouseEvent): void 
Invoked when a mouse button is moved with a button pressed. 
Invoked when a mouse button is moved without a button 
pressed.
30 
Example: Moving Message Using 
Mouse 
Objective: Create a 
program to display a 
message in a panel. 
You can use the 
mouse to move the 
message. The 
message moves as 
the mouse drags and 
is always displayed 
at the mouse point. 
MMoovveeMMeessssaaggeeDDeemmoo RRuunn
31 
Example: (Omitted) 
Handling Complex Mouse Events 
Objective: Create a 
program for drawing 
using a mouse. Draw 
by dragging with the 
left mouse button 
pressed; erase by 
dragging with the 
right button pressed. 
SSccrriibbbblleeDDeemmoo RRuunn
32 
Handling Keyboard Events 
To process a keyboard event, use the following 
handlers in the KeyListener interface: 
 keyPressed(KeyEvent e) 
Called when a key is pressed. 
 keyReleased(KeyEvent e) 
Called when a key is released. 
 keyTyped(KeyEvent e) 
Called when a key is pressed and then 
released.
33 
The KeyEvent Class 
 Methods: 
getKeyChar() method 
getKeyCode() method 
 Keys: 
Home VK_HOME 
End VK_END 
Page Up VK_PGUP 
Page Down VK_PGDN 
etc...
34 
The KeyEvent Class, cont. 
java.awt.event.KeyEvent 
+getKeyChar(): char 
+getKeyCode(): int 
Returns the character associated with the key in this event. 
Returns the integer keyCode associated with the key in this event. 
java.awt.event.InputEvent
35 
Example: Keyboard Events 
Demo 
Objective: Display 
a user-input 
character. The user 
can also move the 
character up, 
down, left, and 
right using the 
arrow keys. 
KKeeyyEEvveennttDDeemmoo RRuunn
36 
The Timer Class 
Optional 
Some non-GUI components can fire events. The javax.swing.Timer 
class is a source component that fires an ActionEvent at a predefined 
rate. 
javax.swing.Timer 
+Timer(delay: int, listener: 
ActionListener) 
+addActionListener(listener: 
ActionListener): void 
+start(): void 
+stop(): void 
+setDelay(delay: int): void 
Creates a Timer with a specified delay in milliseconds and an 
ActionListener. 
Adds an ActionListener to the timer. 
Starts this timer. 
Stops this timer. 
Sets a new delay value for this timer. 
The Timer class can be used to control animations. For example, you 
can use it to display a moving message. 
AAnniimmaattiioonnDDeemmoo RRuunn
37 
Clock Animation 
In Chapter 12, you drew a StillClock to show the current 
time. The clock does not tick after it is displayed. What can 
you do to make the clock display a new current time every 
second? The key to making the clock tick is to repaint it 
every second with a new current time. You can use a timer 
to control how to repaint the clock. 
CClloocckkAAnniimmaattiioonn RRuunn

Synapseindia dotnet development chapter 14 event-driven programming

  • 1.
    1 Chapter 14Event-Driven Programming Chapter 12 GUI Basics Chapter 14 Event-Driven Programming Chapter 15 Creating User Interfaces §10.2, “Abstract Classes,” in Chapter 10 Chapter 13 Graphics Chapter 16 Applets and Multimedia §10.4, “Interfaces,” in Chapter 10
  • 2.
    2 Objectives To start with event-driven programming with a simple example (§14.1). To explain the concept of event-driven programming (§14.2). To understand events, event sources, and event classes (§14.2). To declare listener classes and write the code to handle events (§14.3). To register listener objects in the source object (§11.3). To understand how an event is handled (§14.3). To write programs to deal with ActionEvent (§14.3). To write programs to deal with MouseEvent (§14.4). To write programs to deal with KeyEvent (§14.5). To use the Timer class to control animations (§14.6 Optional).
  • 3.
    3 Procedural vs.Event-Driven Programming  Procedural programming is executed in procedural order.  In event-driven programming, code is executed upon activation of events.
  • 4.
    4 Taste ofEvent-Driven Programming  The example displays a button in the frame. A message is displayed on the console when a button is clicked. SSiimmpplleeEEvveennttDDeemmoo RRuunn
  • 5.
    5 Events An event can be defined as a type of signal to the program that something has happened.  The event is generated by external user actions such as mouse movements, mouse clicks, and keystrokes, or by the operating system, such as a timer.
  • 6.
  • 7.
    7 Event Information An event object contains whatever properties are pertinent to the event. You can identify the source object of the event using the getSource() instance method in the EventObject class. The subclasses of EventObject deal with special types of events, such as button actions, window events, component events, mouse movements, and keystrokes. Table 14.1 lists external user actions, source objects, and event types generated.
  • 8.
    8 Selected UserActions Source Event Type User Action Object Generated Click a button JButton ActionEvent Click a check box JCheckBox ItemEvent, ActionEvent Click a radio button JRadioButton ItemEvent, ActionEvent Press return on a text field JTextField ActionEvent Select a new item JComboBox ItemEvent, ActionEvent Window opened, closed, etc. Window WindowEvent Mouse pressed, released, etc. Component MouseEvent Key released, pressed, etc. Component KeyEvent
  • 9.
    +actionPerformed(event: ActionEvent) 9 The Delegation Model source: SourceClass +addXListener(listener: XListener) listener: ListenerClass User Action Trigger an event XListener +handler(event: XEvent) Register by invoking source.addXListener(listener); (a) A generic source component with a generic listener source: JButton +addActionListener(listener: ActionListener) ActionListener listener: CustomListenerClass Register by invoking source.addActionListener((b) A JButton source component listener); with an ActionListener
  • 10.
    Keep it alist 10 Internal Function of a Source Component source: SourceClass +addXListener(XListener listener) Keep it a list event: XEvent listener1 listener2 … listenern (a) Internal function of a generic source object +handler( Invoke listener1.handler(event) listener2.handler(event) … listenern.handler(event) An event is triggered source: JButton +addActionListener(ActionListener listener) event: ActionEvent (b) Internal function of a JButton object listener1 listener2 … listenern +handler( Invoke listener1.actionPerformed(event) listener2.actionPerformed(event) … listenern.actionPerformed(event) An event is triggered
  • 11.
    11 The DelegationModel: Example JButton jbt = new JButton(OK); ActionListener listener = new OKListener(); jbt.addActionListener(listener);
  • 12.
    12 Selected EventHandlers Event Class Listener Interface Listener Methods (Handlers) ActionEvent ActionListener actionPerformed(ActionEvent) ItemEvent ItemListener itemStateChanged(ItemEvent) WindowEvent WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) ContainerEvent ContainerListener componentAdded(ContainerEvent) componentRemoved(ContainerEvent) MouseEvent MouseListener mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseClicked(MouseEvent) mouseExited(MouseEvent) mouseEntered(MouseEvent) KeyEvent KeyListener keyPressed(KeyEvent) keyReleased(KeyEvent) keyTypeed(KeyEvent)
  • 13.
    13 java.awt.event.ActionEvent java.awt.event.ActionEvent +getActionCommand(): String +getModifiers(): int +getWhen(): long Returns the command string associated with this action. For a button, its text is the command string. Returns the modifier keys held down during this action event. Returns the timestamp when this event occurred. The time is the number of milliseconds since January 1, 1970, 00:00:00 GMT. java.util.EventObject +getSource(): Object Returns the object on which the event initially occurred. java.awt.event.AWTEvent
  • 14.
    14 Inner ClassListeners A listener class is designed specifically to create a listener object for a GUI component (e.g., a button). It will not be shared by other applications. So, it is appropriate to define the listener class inside the frame class as an inner class.
  • 15.
    15 Inner Classes Inner class: A class is a member of another class. Advantages: In some applications, you can use an inner class to make programs simple.  An inner class can reference the data and methods defined in the outer class in which it nests, so you do not need to pass the reference of the outer class to the constructor of the inner class. SShhoowwIInnnneerrCCllaassss
  • 16.
    16 Inner Classes,cont. public class Test { ... } public class A { ... } public class Test { ... // Inner class public class A { ... } } (a) (b) // OuterClass.java: inner class demo public class OuterClass { private int data; /** A method in the outer class */ public void m() { // Do something } // An inner class class InnerClass { /** A method in the inner class */ public void mi() { // Directly reference data and method // defined in its outer class data++; m(); } } } (c)
  • 17.
    17 Inner Classes(cont.)  Inner classes can make programs simple and concise.  An inner class supports the work of its containing outer class and is compiled into a class named OuterClassName$InnerClassName.class. For example, the inner class InnerClass in OuterClass is compiled into OuterClass$InnerClass.class.
  • 18.
    18 Inner Classes(cont.)  An inner class can be declared public, protected, or private subject to the same visibility rules applied to a member of the class.  An inner class can be declared static. A static inner class can be accessed using the outer class name. A static inner class cannot access nonstatic members of the outer class
  • 19.
    19 Revising SimpleEventDemoUsing Inner Classes SSiimmpplleeEEvveennttDDeemmooIInnnneerrCCllaassss RRuunn
  • 20.
    20 Anonymous InnerClasses  An anonymous inner class must always extend a superclass or implement an interface, but it cannot have an explicit extends or implements clause.  An anonymous inner class must implement all the abstract methods in the superclass or in the interface.  An anonymous inner class always uses the no-arg constructor from its superclass to create an instance. If an anonymous inner class implements an interface, the constructor is Object().  An anonymous inner class is compiled into a class named OuterClassName$n.class. For example, if the outer class Test has two anonymous inner classes, these two classes are compiled into Test$1.class and Test$2.class.
  • 21.
    21 Anonymous InnerClasses (cont.) Inner class listeners can be shortened using anonymous inner classes. An anonymous inner class is an inner class without a name. It combines declaring an inner class and creating an instance of the class in one step. An anonymous inner class is declared as follows: new SuperClassName/InterfaceName() { // Implement or override methods in superclass or interface // Other methods if necessary }
  • 22.
    22 Revising SimpleEventDemoUsing Anonymous Inner Classes SSiimmpplleeEEvveennttDDeemmooAAnnoonnyymmoouussIInnnneerrCCllaassss RRuunn
  • 23.
    23 Example: HandlingSimple Action Events  Objective: Display two buttons OK and Cancel in the window. A message is displayed on the console to indicate which button is clicked, when a button is clicked. TTeessttAAccttiioonnEEvveenntt RRuunn
  • 24.
    24 Interaction BetweenSource and Listener : TestActionEvent jbtCancel: JButton jbtOK: JButton btListener: ButtonListener 1. addActionListener 2. addActionListener 3. actionPerformed 4. actionPerformed 1. jbtOK registers btListener by invoking addActionListener(btListner). 2. jbtCancel registers btListener by invoking addActionListener(btListner). 3. jbtOK invokes btListener’s actionPerformed method to process an ActionEvnet. 4. jbtCancel invokes btListener’s actionPerformed method to process an ActionEvent.
  • 25.
    Objective: Demonstrate handlingthe window events. Any subclass of the Window class can generate the following window events: window opened, closing, closed, activated, deactivated, iconified, and deiconified. This program creates a frame, listens to the window events, and displays a message to indicate the occurring event. 25 Example: Handling Window Events TTeessttWWiinnddoowwEEvveenntt RRuunn
  • 26.
    26 Example: MultipleListeners for a Single Source Objective: This example modifies Listing 14.1 to add a new listener for each button. The two buttons OK and Cancel use the frame class as the listener. This example creates a new listener class as an additional listener for the action events on the buttons. When a button is clicked, both listeners respond to the action event. TTeessttMMuullttiipplleeLLiisstteenneerr RRuunn
  • 27.
    27 MouseEvent java.awt.event.MouseEvent +getButton(): int +getClickCount(): int +getPoint(): java.awt.Point +getX(): int +getY(): int Indicates which mouse button has been clicked. Returns the number of mouse clicks associated with this event. Returns a Point object containing the x and y coordinates. Returns the x-coordinate of the mouse point. Returns the y-coordinate of the mouse point. java.awt.event.InputEvent +getWhen(): long +isAltDown(): boolean +isControlDown(): boolean +isMetaDown(): boolean +isShiftDown(): boolean Returns the timestamp when this event occurred. Returns whether or not the Alt modifier is down on this event. Returns whether or not the Control modifier is down on this event. Returns whether or not the Meta modifier is down on this event Returns whether or not the Shift modifier is down on this event.
  • 28.
    28 Handling MouseEvents  Java provides two listener interfaces, MouseListener and MouseMotionListener, to handle mouse events.  The MouseListener listens for actions such as when the mouse is pressed, released, entered, exited, or clicked.  The MouseMotionListener listens for actions such as dragging or moving the mouse.
  • 29.
    29 Handling MouseEvents java.awt.event.MouseListener +mousePressed(e: MouseEvent): void +mouseReleased(e: MouseEvent): void +mouseClicked(e: MouseEvent): void +mouseEntered(e: MouseEvent): void +mouseExited(e: MouseEvent): void Invoked when the mouse button has been pressed on the source component. Invoked when the mouse button has been released on the source component. Invoked when the mouse button has been clicked (pressed and released) on the source component. Invoked when the mouse enters the source component. Invoked when the mouse exits the source component. java.awt.event.MouseMotionListener +mouseDragged(e: MouseEvent): void +mouseMoved(e: MouseEvent): void Invoked when a mouse button is moved with a button pressed. Invoked when a mouse button is moved without a button pressed.
  • 30.
    30 Example: MovingMessage Using Mouse Objective: Create a program to display a message in a panel. You can use the mouse to move the message. The message moves as the mouse drags and is always displayed at the mouse point. MMoovveeMMeessssaaggeeDDeemmoo RRuunn
  • 31.
    31 Example: (Omitted) Handling Complex Mouse Events Objective: Create a program for drawing using a mouse. Draw by dragging with the left mouse button pressed; erase by dragging with the right button pressed. SSccrriibbbblleeDDeemmoo RRuunn
  • 32.
    32 Handling KeyboardEvents To process a keyboard event, use the following handlers in the KeyListener interface: keyPressed(KeyEvent e) Called when a key is pressed. keyReleased(KeyEvent e) Called when a key is released. keyTyped(KeyEvent e) Called when a key is pressed and then released.
  • 33.
    33 The KeyEventClass Methods: getKeyChar() method getKeyCode() method Keys: Home VK_HOME End VK_END Page Up VK_PGUP Page Down VK_PGDN etc...
  • 34.
    34 The KeyEventClass, cont. java.awt.event.KeyEvent +getKeyChar(): char +getKeyCode(): int Returns the character associated with the key in this event. Returns the integer keyCode associated with the key in this event. java.awt.event.InputEvent
  • 35.
    35 Example: KeyboardEvents Demo Objective: Display a user-input character. The user can also move the character up, down, left, and right using the arrow keys. KKeeyyEEvveennttDDeemmoo RRuunn
  • 36.
    36 The TimerClass Optional Some non-GUI components can fire events. The javax.swing.Timer class is a source component that fires an ActionEvent at a predefined rate. javax.swing.Timer +Timer(delay: int, listener: ActionListener) +addActionListener(listener: ActionListener): void +start(): void +stop(): void +setDelay(delay: int): void Creates a Timer with a specified delay in milliseconds and an ActionListener. Adds an ActionListener to the timer. Starts this timer. Stops this timer. Sets a new delay value for this timer. The Timer class can be used to control animations. For example, you can use it to display a moving message. AAnniimmaattiioonnDDeemmoo RRuunn
  • 37.
    37 Clock Animation In Chapter 12, you drew a StillClock to show the current time. The clock does not tick after it is displayed. What can you do to make the clock display a new current time every second? The key to making the clock tick is to repaint it every second with a new current time. You can use a timer to control how to repaint the clock. CClloocckkAAnniimmaattiioonn RRuunn