public class InvocationEvent extends AWTEventimplements ActiveEvent
run() method on a
Runnable when dispatched by the AWT event dispatcher thread. This class can be used as a reference implementation of
ActiveEvent rather than declaring a new class and defining
dispatch().
Instances of this class are placed on the EventQueue by calls to invokeLater and invokeAndWait. Client code can use this fact to write replacement functions for invokeLater and invokeAndWait without writing special-case code in any AWTEventListener objects.
An unspecified behavior will be caused if the id parameter of any particular InvocationEvent instance is not in the range from INVOCATION_FIRST to INVOCATION_LAST.
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
catchExceptions
Set to true if dispatch() catches Throwable and stores it in the exception instance variable.
|
static int |
INVOCATION_DEFAULT
The default id for all InvocationEvents.
|
static int |
INVOCATION_FIRST
Marks the first integer id for the range of invocation event ids.
|
static int |
INVOCATION_LAST
Marks the last integer id for the range of invocation event ids.
|
protected Object |
notifier
The (potentially null) Object whose notifyAll() method will be called immediately after the Runnable.run() method has returned or thrown an exception or after the event was disposed.
|
protected Runnable |
runnable
The Runnable whose run() method will be called.
|
ACTION_EVENT_MASK, ADJUSTMENT_EVENT_MASK, COMPONENT_EVENT_MASK, consumed, CONTAINER_EVENT_MASK, FOCUS_EVENT_MASK, HIERARCHY_BOUNDS_EVENT_MASK, HIERARCHY_EVENT_MASK, id, INPUT_METHOD_EVENT_MASK, INVOCATION_EVENT_MASK, ITEM_EVENT_MASK, KEY_EVENT_MASK, MOUSE_EVENT_MASK, MOUSE_MOTION_EVENT_MASK, MOUSE_WHEEL_EVENT_MASK, PAINT_EVENT_MASK, RESERVED_ID_MAX, TEXT_EVENT_MASK, WINDOW_EVENT_MASK, WINDOW_FOCUS_EVENT_MASK, WINDOW_STATE_EVENT_MASKsource| Modifier | Constructor and Description |
|---|---|
protected |
InvocationEvent(Object
Constructs an
InvocationEvent with the specified source and ID which will execute the runnable's
run method when dispatched.
|
|
InvocationEvent(Object
Constructs an
InvocationEvent with the specified source which will execute the runnable's
run method when dispatched.
|
|
InvocationEvent(Object
Constructs an
InvocationEvent with the specified source which will execute the runnable's
run method when dispatched.
|
|
InvocationEvent(Object
Constructs an
InvocationEvent with the specified source which will execute the runnable's
run method when dispatched.
|
| Modifier and Type | Method and Description |
|---|---|
void |
dispatch()
Executes the Runnable's
run() method and notifies the notifier (if any) when
run() has returned or thrown an exception.
|
Exception |
getException()
Returns any Exception caught while executing the Runnable's
run() method.
|
Throwable |
getThrowable()
Returns any Throwable caught while executing the Runnable's
run() method.
|
long |
getWhen()
Returns the timestamp of when this event occurred.
|
boolean |
isDispatched()
Returns
true if the event is dispatched or any exception is thrown while dispatching,
false otherwise.
|
String |
paramString()
Returns a parameter string identifying this event.
|
getSourcepublic static final int INVOCATION_FIRST
public static final int INVOCATION_DEFAULT
public static final int INVOCATION_LAST
protected Runnablerunnable
protected volatile Objectnotifier
isDispatched()
protected boolean catchExceptions
public InvocationEvent(Objectsource, Runnable runnable)
InvocationEvent with the specified source which will execute the runnable's
run method when dispatched.
This is a convenience constructor. An invocation of the form InvocationEvent(source, runnable) behaves in exactly the same way as the invocation of InvocationEvent(source, runnable, null, false).
This method throws an IllegalArgumentException if source is null.
source - The
Object that originated the event
runnable - The
Runnable whose
run method will be executed
IllegalArgumentException - if
source is null
EventObject.getSource() ,
InvocationEvent(Object, Runnable, Object, boolean)
public InvocationEvent(Objectsource, Runnable runnable, Object notifier, boolean catchThrowables)
InvocationEvent with the specified source which will execute the runnable's
run method when dispatched. If notifier is non-
null,
notifyAll() will be called on it immediately after
run has returned or thrown an exception.
An invocation of the form InvocationEvent(source, runnable, notifier, catchThrowables) behaves in exactly the same way as the invocation of InvocationEvent(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables).
This method throws an IllegalArgumentException if source is null.
source - The
Object that originated the event
runnable - The
Runnable whose
run method will be executed
notifier - The
Object whose
notifyAll method will be called after
Runnable.run has returned or thrown an exception or after the event was disposed
catchThrowables - Specifies whether
dispatch should catch Throwable when executing the
Runnable's
run method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loop
IllegalArgumentException - if
source is null
EventObject.getSource() ,
InvocationEvent(Object, int, Runnable, Object, boolean)
public InvocationEvent(Objectsource, Runnable runnable, Runnable listener, boolean catchThrowables)
InvocationEvent with the specified source which will execute the runnable's
run method when dispatched. If listener is non-
null,
listener.run() will be called immediately after
run has returned, thrown an exception or the event was disposed.
This method throws an IllegalArgumentException if source is null.
source - The
Object that originated the event
runnable - The
Runnable whose
run method will be executed
listener - The
RunnableRunnable whose
run() method will be called after the
InvocationEvent was dispatched or disposed
catchThrowables - Specifies whether
dispatch should catch Throwable when executing the
Runnable's
run method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loop
IllegalArgumentException - if
source is null
protected InvocationEvent(Objectsource, int id, Runnable runnable, Object notifier, boolean catchThrowables)
InvocationEvent with the specified source and ID which will execute the runnable's
run method when dispatched. If notifier is non-
null,
notifyAll will be called on it immediately after
run has returned or thrown an exception.
This method throws an IllegalArgumentException if source is null.
source - The
Object that originated the event
id - An integer indicating the type of event. For information on allowable values, see the class description for
InvocationEvent
runnable - The
Runnable whose
run method will be executed
notifier - The
Object whose
notifyAll method will be called after
Runnable.run has returned or thrown an exception or after the event was disposed
catchThrowables - Specifies whether
dispatch should catch Throwable when executing the
Runnable's
run method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loop
IllegalArgumentException - if
source is null
EventObject.getSource() ,
AWTEvent.getID()
public void dispatch()
run() method and notifies the notifier (if any) when
run() has returned or thrown an exception.
dispatch in interface
ActiveEvent
isDispatched()
public ExceptiongetException()
run() method.
public ThrowablegetThrowable()
run() method.
public long getWhen()
public boolean isDispatched()
true if the event is dispatched or any exception is thrown while dispatching,
false otherwise. The method should be called by a waiting thread that calls the
notifier.wait() method. Since spurious wakeups are possible (as explained in
Object.wait() ), this method should be used in a waiting loop to ensure that the event got dispatched:
while (!event.isDispatched()) {
notifier.wait();
}
If the waiting thread wakes up without dispatching the event, the
isDispatched() method returns
false, and the
while loop executes once more, thus, causing the awakened thread to revert to the waiting mode.
If the notifier.notifyAll() happens before the waiting thread enters the notifier.wait() method, the while loop ensures that the waiting thread will not enter the notifier.wait() method. Otherwise, there is no guarantee that the waiting thread will ever be woken from the wait.
true if the event has been dispatched, or any exception has been thrown while dispatching,
false otherwise
dispatch(),
notifier,
catchExceptions
public StringparamString()
paramString in class
AWTEvent