28
Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Java Event Handling Handling -- --

Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Embed Size (px)

Citation preview

Page 1: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

1

Java Event HandlingJava Event HandlingJava Event HandlingJava Event Handling

----

Page 2: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

2

Event Handling• Happens every time a user

interacts with a user interface. For example, when a user pushes a button, or types a character.

Page 3: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

3

A Typical Situation: Scrollbar

adjustmentListeners

*

<<create>>

source

<<use>>

InputScrollbarAdapter

+adjustmentValueChanged:

interfaceAdjustable

ComponentScrollBar

+addAdjustmentListener:

AWTEventAdjustmentEvent

EventListenerinterface

AdjustmentListener

Page 4: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

4

Event Representation• Each event is represented by an

object that gives information about the event and identifies the event source.

• In Java, every event is a subclass of EventObject.

Page 5: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

5

Abstract class EventObject

• getSource returns the object on which the event occured.

• Each subclass adds its own specialized methods.

Page 6: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

6

Event Sources• Event sources are usually

components, but they can be other kind of objects too.

• An event source can have multiple event listeners registered on it.

• Examples of event sources are e.g. buttons and windows.

Page 7: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

7

Event Listeners• An event listener is an object that

wants to be notified when an event has occured on a component.

• The common interface that all event listener interfaces must extend is EventListener.

Page 8: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

8

Event Listeners• For example, to listen for

ActionEvents the class must implement the interface ActionListener, that in turn is an implementation of EventListener.

• An example is shown on the next slide

Page 9: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

9

An ActionListener#source

<<use>> <<create>>

* TextField

+addActionListener:

ActionEvent

EventListenerinterface

ActionListener

ItemListenerAdjustmentListener

ConverterModel

+itemStateChanged:+actionPerformed:

InputTextAdapter

+actionPerformed:

TextComponent

Component

Object

AWTEvent

ObjectEventObject

By the classesimplementingthe interface

Page 10: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

10

Event Adapters• To highten the ease of use, most

eventlistener interfaces have corresponding adapter classes that have all of the interface methods implemented.

• Must be subclassed.

Page 11: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

11

A Complex Listener with Adapter

-listeners

*

source

<<create>>

<<use>>

ManickAdapter

+treatment1Occured:+treatment2Occured:+treatmentnOccured:

EventListenerinterface

TreatmentListener

+treatment1Occured:+treatment2Occured:+treatmentnOccured:

AWTEventTreatmentEvent

interfaceTreatable

MySimpleListener

+treatmentxOccured:

Manick

-listeners:TreatmentListeners[*]

+addTreatmentListener:

Page 12: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

12

Three Required Parts• public class MyClass implements

ActionListener• someComponent.addActionListene

r(aMyClass)• public void

actionPerformed(ActionEvent e){}

Page 13: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

13

An Example

Page 14: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

14

Threads and Event Handling

• All event handling code executes in a single thread, the event-dispatching thread.

• Ensures that one event handler finishes before the next one can start.

Page 15: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

15

Components and Events

• Every component support component, focus, key, mouse and mouse-motion listeners.

• Fires only events for which listeners has registered an interest in.

Page 16: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

16

Java Event Handling and the Observer

Pattern• Java’s current event handling was

introduced in JDK 1.1.• It is a specialized version of the

Observer pattern.

Page 17: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

17

Java Event Handling and the Observer

Pattern• The observer pattern is used when

an object wants to be informed of a state change in another object.

• In java, the observer object listens for events to happen.

Page 18: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

18

Java Event Handling and the Observer

Pattern

Page 19: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

19

Java Event Handling and the Observer

Pattern

Page 20: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

20

Java and the Observer Pattern

• Java has included the Observer-Observable pair of objects that concurs to the Observer pattern, it is therefore easy to implement the pattern behaviour on your own.

Page 21: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

21

Events in the Converter• ActionEvent

– Listener must implement the interface ActionListener.

• ChangeEvent (Swing) or AdjustmentEvent– Listener must implement the interface

ChangeListener or AdjustmentListener.

• ItemEvent– Listener must implement the interface

ItemListener.

Page 22: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

22

ActionEvent• Generated when the user presses

return in the textfield.• EventSource calls the method

actionPerformed() in the listeners and sends the event as a parameter.

Page 23: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

23

ChangeEvent• Generated when the user changes

the slider.• Listeners must implement the

method stateChanged(), that is invoked when the target of the listener has changed its state.

Page 24: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

24

AdjustmentEvent• Generated when the user changes

the value of the scrollbar (AWT).• Has several specialized methods:

– getAdjustable()– getAdjustmentType()– getValue()

Page 25: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

25

AdjustmentEvent• Listeners must implement the

method adjustmentValueChanged() that is invoked when the srollbar changes its value.

Page 26: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

26

ItemEvent• Generated when the user selects

another unit in the choicebox.• Has some specialized methods:

– getItem()– getItemSelectable()– getStateChanged()

Page 27: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

27

The ItemEvent Structure

*

<<create>>

source

<<use>>

ComponentChoice

+addItermListener:

ActionListenerAdjustmentListener

ConverterModel

+itemStateChanged:+actionPerformed:

EventListenerinterface

ItemListener

AWTEventItemEvent

interfaceItemSelectable

Page 28: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --

Mari Göransson - KaU - Datavetenskap - DAVD11

28

ItemEvent• The event is passed to every

ItemListener object which registered to receive such events using the component's addItemListener() method.

• When an item-selection event occurs, the listener object's itemStateChanged() method is invoked.