![Page 1: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/1.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/2.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/3.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/4.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/5.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/6.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/7.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/8.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/9.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/10.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/11.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/12.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/13.jpg)
Mari Göransson - KaU - Datavetenskap - DAVD11
13
An Example
![Page 14: Mari Göransson - KaU - Datavetenskap - DAVD11 1 Java Event Handling --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/14.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/15.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/16.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/17.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/18.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/19.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/20.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/21.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/22.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/23.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/24.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/25.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/26.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/27.jpg)
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 --](https://reader035.vdocuments.us/reader035/viewer/2022062621/551c5b795503469d6a8b5123/html5/thumbnails/28.jpg)
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.