KEMBAR78
Event Handling | PDF | Class (Computer Programming) | Method (Computer Programming)
0% found this document useful (0 votes)
27 views62 pages

Event Handling

Event handling in GUI applications, such as those written in Java, is driven by user interactions that generate events, which represent changes in the state of objects. The delegation event model is a modern approach that separates event generation from event processing, allowing listeners to register for specific events and handle them accordingly. Key components of this model include events, event sources, and event listeners, with various classes and interfaces provided in the java.awt.event package to facilitate event handling.

Uploaded by

dhhdxhus
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views62 pages

Event Handling

Event handling in GUI applications, such as those written in Java, is driven by user interactions that generate events, which represent changes in the state of objects. The delegation event model is a modern approach that separates event generation from event processing, allowing listeners to register for specific events and handle them accordingly. Key components of this model include events, event sources, and event listeners, with various classes and interfaces provided in the java.awt.event package to facilitate event handling.

Uploaded by

dhhdxhus
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Event Handling

Chapter 4.3

1
Event Handling
Any program that uses GUI (graphical user
interface) such as Java application written for windows,
is event driven.

Event describes the change of state of any object.

Events are generated as result of user interaction with


the graphical user interface components.

2
• Changing the state of an object is known as an event.
• For example: clicking on a button, Entering a character
in Textbox, moving the mouse, selecting an item from
list, scrolling the page, etc.
• The java.awt.event package provides many event
classes and Listener interfaces for event handling.

3
Delegation Event Model
• The modern approach to handling events is based on
the delegation event model.
• The delegation event model provides a standard
mechanism for a source to generate an event and
send it to a set of listeners.

4
Delegation Event Model
• Its concept is quite simple: a source generates an
event and sends it to one or more listeners.
• In this scheme, the listener simply waits until it
receives an event. Once received, the listener
processes the event and then returns.
• The advantage of this design is that the application
logic that processes events is cleanly separated from
the user interface logic that generates those events.
• A user interface element is able to “delegate” the
processing of an event to a separate piece of code.

5
6
• In the delegation event model, listener must
register with a source in order to receive an
event notification.
• Notification are sent only to listeners that
want to receive them.
• There are mainly three parts in delegation
event model.
– Events.
– Event sources.
– Event Listeners.

7
Components of Event Handling
• Events
An event is a change of state of an object.
• It can be generated as a consequence of a person
interacting with the elements in a graphical user
interface.
• Some of the activities that cause events to be
generated are pressing a button, entering a
character via the keyboard, selecting an item in
a list, and clicking the mouse.

8
Event
– Events may also occur that are not directly
caused by interactions with a user interface.
– For example, an event may be generated when a
timer expires, a counter exceeds a value,
software or hardware failure occurs, or an
operation is completed.
• We are free to define events that are appropriate for
an application.

9
Event Sources
• A source is an object that generates an event. This
occurs when the internal state of that object changes
in some way.
• Sources may generate more than one type of event.
• A source must register listeners in order for the
listeners to receive notifications about a specific type
of event.
• Each type of event has its own registration method.

10
• Here is the general form to register listeners:
– public void addTypeListener(TypeListener el)
– For example: b.addActionListener(this);
• Here, type is the name of the event, and el is a
reference to the event listener.
• For example, the method that registers a keyboard
event listener is called addKeyListener().
• The method that registers a mouse motion listener is
called addMouseMotionListener().
• When an event occurs, all registered listeners are
notified and receive a copy of the event object.

11
• The general form of unregister listener
method is this:

– Public void removeTypeListener(TypeListener el)

• Here, type is an object that is notified when


an event listener. For example, to remove a
keyboard listener, you would call
removeKeyListener()

12
Event Listeners
• A listener is an object that is notified when an
event occurs.
• It has two major requirements. First, it must have
been registered with one or more sources to
receive notifications about specific types of events.
• Second, it must implement methods to receive and
process these notifications.
• The method that receive and process events are
defined in a set of interfaces found in java.awt.event.
13
Event Listeners
• For example, the MouseMotionListener interface
defines two methods to receive notifications when
the mouse is dragged or moved.

• Any object may receive and process one or both of


these events if it provides an implementation of
this interface.

14
15
Important Event Classes and
Interface

16
Event Classes
• The classes that represent events are at the core of Java’s
event handling mechanism.
• At the root of the Java event class hierarchy is EventObject,
which is in java.util. It is the superclass for all events.
EventObject contains two methods: getSource( ) and
toString( ).
• The getSource( ) method returns the source of the event. Its
general form is shown here:
• Object getSource( )
• As expected, toString( ) returns the string equivalent of the
event.

17
Event Classes
• The class AWTEvent, defined within the
java.awt package, is a subclass of EventObject.
• It is the superclass (either directly or indirectly)
of all AWT-based events used by the delegation
event model.
– EventObject is a superclass of all events.
– AWTEvent is a superclass of all AWT events
that are handled by the delegation event
model
18
Event Classes Description Listener Interface
ActionEvent generated when button is pressed, menu-item is ActionListener
selected, list-item is double clicked

MouseEvent generated when mouse is dragged, moved, clicked, MouseListener


pressed or released and also when it enters or exit a
component
KeyEvent generated when input is received from keyboard KeyListener

ItemEvent generated when check-box or list item is clicked ItemListener

TextEvent generated when value of textarea or textfield is TextListener


changed
MouseWheelEvent generated when mouse wheel is moved MouseWheelListener

WindowEvent generated when window is activated, deactivated, WindowListener


deiconified, iconified, opened or closed
ComponentEvent generated when component is hidden, moved, ComponentEventListe
resized or set visible ner

ContainerEvent generated when component is added or removed ContainerListener


from container
AdjustmentEvent generated when scroll bar is manipulated AdjustmentListener

FocusEvent generated when component gains or loses keyboard FocusListener 19


focus
• Steps to handle events:
– Implement appropriate interface in the class.
– Register the component with the listener.

20
Registration Methods
For registering the component with the Listener, many classes provide
the registration methods. For example:
Button
public void addActionListener(ActionListener a){}
MenuItem
public void addActionListener(ActionListener a){}
TextField
public void addActionListener(ActionListener a){}
public void addTextListener(TextListener a){}
TextArea
public void addTextListener(TextListener a){}
Checkbox
public void addItemListener(ItemListener a){}
Choice
public void addItemListener(ItemListener a){}
List
public void addActionListener(ActionListener a){}
public void addItemListener(ItemListener a){} 21
ActionEvent
• An ActionEvent is generated when a button is
pressed, a list item is double-clicked, or a menu item
is selected.
• The ActionEvent class defines four integer constants that are
used to identify modifiers associated with an action event:
• public static final int ALT_MASK The alt modifier.
– An indicator that the alt key was held down during the event.
• public static final int SHIFT_MASK The shift modifier.
– An indicator that the shift key was held down during the event.
• public static final int CTRL_MASK The control modifier.
– An indicator that control key was held down during the event.
• public static final int META_MASK The meta modifier.
– An indicator that the meta key was held down during the
event. (The Meta key is a modifier key on certain keyboards)
Constructor-1
public
ActionEvent(Object source,int id,String command,int modifiers)

– Constructs an ActionEvent object with modifier keys.


– Parameters: source - the object that originated the event

– id - an integer that identifies the event

– command - a string that may specify a command (possibly


one of several) associated with the event

– modifiers - the modifier keys held down during this action

23
Constructor-2
public
ActionEvent(Object source,int id,String command,long when,
int modifiers)

Constructs an ActionEvent object with the specified modifier


keys and timestamp.
Parameters: source - the object that originated the event

id - an integer that identifies the event

command - a string that may specify a command (possibly one


of several) associated with the event

when - the time the event occurred

modifiers - the modifier keys held down during this action


24
Methods
• public String getActionCommand()
– Returns the command string associated with this
action.

• public long getWhen()


– Returns the timestamp of when this event occurred.

• int getModifiers()
– Returns the modifier keys held down during this
action event.

• String paramString()
– Returns a parameter string identifying this action
event. 25
ActionListener Interface

• This interface defines the actionPerformed()


method that is invoked when an action event
occurs.
• Its general form is shown here:
– void actionPerformed(ActionEvent ae)

26
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/* <applet code="ActionEventExample" width=200 height=200>


</applet> */

public class ActionEventExample extends Applet implements


ActionListener
{
String actionMessage="";
public void init()
{
Button Button1 = new Button("Ok");
Button Button2 = new Button("Cancel");
add(Button1);
add(Button2);
Button1.addActionListener(this); //Listener Registered
Button2.addActionListener(this); //Listener Registered
} 27
public void paint(Graphics g)
{
g.drawString(actionMessage,10,50);
}

public void actionPerformed(ActionEvent ae)


{

String action = ae.getActionCommand();

if(action.equals("Ok"))
actionMessage = "Ok Button Pressed";
else if(action.equals("Cancel"))
actionMessage = "Cancel Button Pressed";

repaint();
}
}

28
29
ItemEvent class
• A semantic event which indicates that an item was
selected or deselected.
• This high-level event is generated by an ItemSelectable
object (such as a List) when an item is selected or
deselected by the user.
• This class has following constants.
• public static final int SELECTED
– This state-change value indicates that an item was
selected.
• public static final int DESELECTED
– This state-change-value indicates that a selected
item was deselected
30
• public ItemEvent (ItemSelectable source, int id, Object item,
int stateChange)
– Constructs an ItemEvent object.
– Parameters:
– source - the ItemSelectable object that originated the
event
– id - an integer that identifies the event type
– item - an object -- the item affected by the event
– stateChange - an integer that indicates whether the
item was selected or deselected

31
Methods of ItemEvent Class
• public ItemSelectable getItemSelectable()
– Returns the creator of the event.
– Returns: the ItemSelectable object that originated the event.
• public Object getItem()
– Returns the item affected by the event.
– Returns: the item (object) that was affected by the event.
• public int getStateChange()
– Returns the type of state change (selected or deselected).
– Returns: an integer that indicates whether the item was selected or
deselected

32
ItemListener interface

• The listener interface for receiving item events.

• void itemStateChanged(ItemEvent e)
• Invoked when an item has been selected or
deselected by the user.
• The code written for this method performs the
operations that need to occur when an item is
selected (or deselected).

33
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/* <applet code="ItemListenerExample" width=200 height=200>


</applet> */

public class ItemListenerExample extends Applet implements


ItemListener
{

Checkbox java = null;


Checkbox vb = null;
Checkbox c = null;

34
public void init()
{
java = new Checkbox("Java");
vb = new Checkbox("Visual Basic");
c = new Checkbox("C");

add(java);
add(vb);
add(c);

java.addItemListener(this);
vb.addItemListener(this);
c.addItemListener(this);
}
public void paint(Graphics g)
{
g.drawString("Java: " + java.getState(),10,80);
g.drawString("VB: " + vb.getState(), 10, 100);
g.drawString("C: " + c.getState(), 10, 120);
}
public void itemStateChanged(ItemEvent ie)
{
repaint();
} 35
}
36
KeyEvent class
• An event which indicates that a keystroke
occurred in a component.
• This class has following constant.
• public static final int KEY_PRESSED
– This event is generated when a key is pushed down.
• public static final int KEY_RELEASED
– This event is generated when a key is let up.
• public static final int KEY_TYPED
– This event is generated when a character is entered. In the
simplest case, it is produced by a single key press. Often,
however, characters are produced by series of key presses,
and the mapping from key pressed events to key typed
events may be many-to-one or many-to-many.
37
• There are many other integer constants that
are defined by KeyEvent. For example
– VK_0 to VK_9
– VK_A to VK_Z define the ASCII equivalents of the
numbers and letters.

• Here are some others:


– VK_ENTER, VK_ESCAPE, VK_CANCEL, VK_UP,
VK_DOWN, VK_LEFT, VK_RIGHT,
VK_PAGE_DOWN,VK_PAGE_UP, VK_SHIFT,
VK_ALT, VK_CONTROL
• The VK constants specify virtual key codes and
are independent of any modifiers, such as
control, shift, or alt.
38
Methods of KeyEvent class
• public int getKeyCode()
– Returns the integer keyCode associated with the key in
this event.
– Returns: the integer code for an actual key on the
keyboard.
• public char getKeyChar()
– Returns the character associated with the key in this
event.
– For example, the KEY_TYPED event for shift + "a"
returns the value for "A".
• boolean isActionKey()
– Returns true if the key firing the event is an action key.
Examples of action keys include Page Up, Caps Lock,
the arrow and function keys.
39
KeyListener Interface
• Key events indicate when the user is typing at the
keyboard.

• Key events are fired by the component with the


keyboard focus when the user presses or releases
keyboard keys.

• Notifications are sent about two basic kinds of key


events:
– The typing of a Unicode character
– The pressing or releasing of a key on the keyboard

40
• The first kind of event is called a key-typed event.
– To know when the user types a Unicode character ? whether
by pressing one key such as 'a' or by pressing several keys in
sequence ?

• The second kind is either a key-pressed or key-released


event.

– To know when the user presses the F1 key, or whether the


user pressed the '3' key on the number pad, you handle key-
pressed events.

41
Methods of KeyListener Interface

Method Purpose
keyTyped(KeyEvent) Called just after the user types a
Unicode character into the listened-to
component.
keyPressed(KeyEvent) Called just after the user presses a key
while the listened-to component has
the focus.
keyReleased(KeyEvent) Called just after the user releases a
key while the listened-to component
has the focus.

42
import java.awt.*;
import java.awt.event.*;
import javax.swing.JApplet;
public class EventDemo6 extends JApplet implements KeyListener
{
String event; // description of keyboard event
public void init() // set up UI
{
setLayout(new FlowLayout());
event = ""; addKeyListener(this); // listen for keyboard events
setFocusable(true); // force applet to receive KeyEvent
}
public void paint(Graphics g) // draw message to applet
{
super.paint(g);
g.drawRect(0, 0, getWidth(), getHeight()); // show bounds of applet
g.drawString(event, 10, 50);
}

43
public void keyPressed(KeyEvent e) // handle key presses
{
event = e.getKeyChar() + " pressed"; repaint();
}
public void keyReleased(KeyEvent e) // handle key releases
{
event = e.getKeyChar() + " released"; repaint();
}
public void keyTyped(KeyEvent e) // handle typing on applet
{
event = e.getKeyChar() + " typed"; repaint();
}
}

44
TextEvent class
• A semantic event which indicates that an object's text
changed.
• This high-level event is generated by an object (such as a
TextComponent) when its text changes.

• public TextEvent(Object source,int id)


– Constructs a TextEvent object.
– Parameters:
– source - the (TextComponent) object that originated
the event
– id - an integer that identifies the event type
45
TextListener interface

• The listener interface for receiving text events.

• void textValueChanged(TextEvent e)
• Invoked when the value of the text has
changed.
• The code written for this method performs
the operations that need to occur when text
changes.

46
MouseEvent class
This event indicates a mouse action occurred in a
component. This low-level event is generated by a
component object for Mouse Events and Mouse
motion events.

47
Constants for java.awt.event.MouseEvent class:
static int MOUSE_CLICKED --The "mouse clicked" event
static int MOUSE_DRAGGED --The "mouse dragged" event
static int MOUSE_ENTERED --The "mouse entered" event
static int MOUSE_EXITED --The "mouse exited" event
static int MOUSE_MOVED --The "mouse moved" event
static int MOUSE_PRESSED -- The "mouse pressed" event
static int MOUSE_RELEASED --The "mouse released" event
static int MOUSE_WHEEL --The "mouse wheel" event

48
Constructor
• MouseEvent(Component source, int id, long
when, int modifiers, int x, int y, int clickCount,
boolean popupTrigger)
– Constructs a MouseEvent object with the specified

source- source component,


id- type of event,
when- system time at mouse event occurred
modifiers-to know what modifiers were pressed after
event was occurred,
x & y- coordinates of the mouse ,
clickCount- click count
popupTrigger- whether popup menu appeared
49
Method Purpose
Returns the number of quick, consecutive
int getClickCount() clicks the user has made (including this
event). For example, returns 2 for a
double click.
int getX() Return the (x,y) position at which the
int getY() event occurred, relative to the component
that fired the event.
Point getPoint() Returns the x,y position of the event
rlative to the source component.

50
MouseListener Interface

• Mouse events notify when the user uses the mouse (or
similar input device) to interact with a component.

• Mouse events occur when the cursor enters or exits a


component's onscreen area and when the user presses
or releases one of the mouse buttons.

51
Methods of MouseListener Interface
Method Purpose
mouseClicked(MouseEvent) Called just after the user clicks the
listened-to component.
mouseEntered(MouseEvent) Called just after the cursor enters the
bounds of the listened-to component.
mouseExited(MouseEvent) Called just after the cursor exits the
bounds of the listened-to component.
mousePressed(MouseEvent) Called just after the user presses a
mouse button while the cursor is over
the listened-to component.
mouseReleased(MouseEvent) Called just after the user releases a
mouse button after a mouse press over
the listened-to component.
52
MouseMotionListener Interface
• Mouse-motion events notify when the user uses the mouse (or a
similar input device) to move the onscreen cursor.

• If an application requires the detection of both mouse events and


mouse-motion events, use the MouseInputAdapter class.

• It implements the MouseInputListener a convenient interface that


implements both the MouseListener and MouseMotionListener
interfaces.

53
Methods of MouseMotionListener Interface

Method Purpose

Called in response to the user moving the mouse


mouseDragged(MouseEvent) while holding a mouse button down. This event
is fired by the component that fired the most
recent mouse-pressed event, even if the cursor is
no longer over that component.

Called in response to the user moving the mouse


with no mouse buttons pressed. This event is
mouseMoved(MouseEvent) fired by the component that's currently under the
cursor.

54
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MouseEventDemo extends JApplet implements MouseListener


{
private int x; // x coordinate of mouse event
private int y; // y coordinate of mouse event
private String event; // description of mouse event

public void init() // set up GUI


{
setLayout(new FlowLayout());

addMouseListener(this); // listen for mouse events

x = -1; // set x negative for no initial message


}

55
public void paint(Graphics g) // draw message to screen
{
super.paint(g);

g.drawRect(0, 0, getWidth(), getHeight()); // show bounds of applet

if(x != - 1) // display event during repainting only


{
g.drawString("Mouse event " + event +
" at (" + x + ", " + y + ")",
10, 50);
}
}

public void mousePressed(MouseEvent e) // save coordinates of presses


{
x = e.getX();
y = e.getY();
event = "press";

repaint();
56
}
public void mouseClicked(MouseEvent e) // save coordinates of clicks
{
x = e.getX();
y = e.getY();
event = "click";

repaint();
}

public void mouseReleased(MouseEvent e) // save coordinates of


releases
{
x = e.getX();
y = e.getY();
event = "release";

repaint();
}

57
public void mouseEntered(MouseEvent e) // save coordinates when mouse
enters applet
{
x = e.getX();
y = e.getY();
event = "enter";

repaint();
}

public void mouseExited(MouseEvent e) // save coordinates when mouse


leaves applet
{
x = e.getX();
y = e.getY();
event = "exit";

repaint();
}
}
/*<applet code=MouseEventDemo height=300 width=300></applet>*/ 58
Summary of Event Classes &
Listeners

59
60
61
62

You might also like