- Forward


Event-Driven Applications
An Introduction with Examples in Java


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

Motivation
Back SMYC Forward
  • Multi-Threaded Applications:
    • It can be very difficult to ensure that the right things happen at the right time
  • Overcoming this Difficulty:
    • Focuses on how classes should handle events rather than on how or when these events will occur
Designing Event-Driven Applications
Back SMYC Forward
  • Focus On:
    • The events that can occur (e.g., mouse clicks, timing signals, key presses);
    • The classes that can generate events of different kinds (often called event producers; and
    • The classes that need to respond to events of different kinds (often called event handlers.
  • Do Not Focus On:
    • The order in which events occur
Events
Back SMYC Forward

One Simple Implementation

javaexamples/events/Event.java
 
Event Handlers
Back SMYC Forward

The Requirements

javaexamples/events/EventHandler.java
 
The Event Queue
Back SMYC Forward

A Central Repository for Events

event-queue
Implementing an Event Queue
Back SMYC Forward
javaexamples/events/EventQueue.java
 
Firing/Dispatching Events
Back SMYC Forward
  • Event Bubbling:
    • There is a (usually pre-defined) hierarchy of objects that handle events
    • Examples: Lingo, HTML Events, AWT
  • Event Listening:
    • The event queue keeps track of which objects want to be notified of which events
    • Examples: Swing
Event Bubbling
Back SMYC Forward

A Document

document_abstraction
Event Bubbling (cont.)
Back SMYC Forward

A Directory

directory_abstraction
Event Bubbling (cont.)
Back SMYC Forward

Expanding the Requirements of Event Handlers

javaexamples/events/BubblingEventHandler.java
 
Event Bubbling (cont.)
Back SMYC Forward

An Abstract Event Handler that "Bubbles"

javaexamples/events/AbstractBubblingEventHandler.java
 
Event Bubbling (cont.)
Back SMYC Forward

A Simple Bubbling Event Queue

javaexamples/events/SimpleBubblingEventQueue.java
 
Event Bubbling (cont.)
Back SMYC Forward

A More Flexibile Bubbling Event Queue

javaexamples/events/BubblingEventQueue.java
 
Event Bubbling (cont.)
Back SMYC Forward

An Example: A Document

javaexamples/events/DocumentElement.java
 
javaexamples/events/Word.java
 
javaexamples/events/Paragraph.java
 
javaexamples/events/Section.java
 
Event Bubbling (cont.)
Back SMYC Forward

An Example: A Driver that uses the Document

javaexamples/events/Driver1.java
 
Event Listening
Back SMYC Forward

Overview

event-listener
Event Listenening (cont.)
Back SMYC Forward

A Simple Listener Event Queue

javaexamples/events/SimpleListenerEventQueue.java
 
Event Listening (cont.)
Back SMYC Forward

A More Flexible Listener Event Queue

javaexamples/events/ListenerEventQueue.java
 
Event Listenening (cont.)
Back SMYC Forward

An Example: A Messaging System

javaexamples/events/MessageLogger.java
 
javaexamples/events/SituationBoard.java
 
Event Listenening (cont.)
Back SMYC Forward

An Example: A Driver

javaexamples/events/Driver2.java
 
There's Always More to Learn
Back -