Upload
lana-meas
View
219
Download
0
Embed Size (px)
Citation preview
Mari Göransson - KaU - Datavetenskap - DAVD11
1
Java Event HandlingJava Event HandlingJava Event HandlingJava 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.
Mari Göransson - KaU - Datavetenskap - DAVD11
3
A Typical Situation: Scrollbar
adjustmentListeners
*
<<create>>
source
<<use>>
InputScrollbarAdapter
+adjustmentValueChanged:
interfaceAdjustable
ComponentScrollBar
+addAdjustmentListener:
AWTEventAdjustmentEvent
EventListenerinterface
AdjustmentListener
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.
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.
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.
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.
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
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
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.
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:
Mari Göransson - KaU - Datavetenskap - DAVD11
12
Three Required Parts• public class MyClass implements
ActionListener• someComponent.addActionListene
r(aMyClass)• public void
actionPerformed(ActionEvent e){}
Mari Göransson - KaU - Datavetenskap - DAVD11
13
An Example
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.
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.
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.
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.
Mari Göransson - KaU - Datavetenskap - DAVD11
18
Java Event Handling and the Observer
Pattern
Mari Göransson - KaU - Datavetenskap - DAVD11
19
Java Event Handling and the Observer
Pattern
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.
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.
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.
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.
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()
Mari Göransson - KaU - Datavetenskap - DAVD11
25
AdjustmentEvent• Listeners must implement the
method adjustmentValueChanged() that is invoked when the srollbar changes its value.
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()
Mari Göransson - KaU - Datavetenskap - DAVD11
27
The ItemEvent Structure
*
<<create>>
source
<<use>>
ComponentChoice
+addItermListener:
ActionListenerAdjustmentListener
ConverterModel
+itemStateChanged:+actionPerformed:
EventListenerinterface
ItemListener
AWTEventItemEvent
interfaceItemSelectable
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.