- java.lang.Object
-
- java.util.EventObject
-
- java.awt.AWTEvent
-
- java.awt.event.InvocationEvent
-
- All Implemented Interfaces:
-
ActiveEvent,Serializable
public class InvocationEvent extends AWTEvent implements ActiveEvent
在AWT事件调度程序线程调度时,在Runnable执行run()方法的事件。 该类可以用作ActiveEvent的参考实现,而不是声明一个新类并定义dispatch()。该类的
EventQueue通过拨打invokeLater和invokeAndWait。 客户端代码可以使用这个事实来编写invokeLater和invokeAndWait替换函数,而不需要在任何AWTEventListener对象中编写特殊情况代码。任何特定
InvocationEvent实例的id参数不在从INVOCATION_FIRST到INVOCATION_LAST的范围内,将会引起未指定的行为。
-
-
Field Summary
Fields Modifier and Type Field 描述 protected booleancatchExceptions如果dispatch()捕获Throwable并将其存储在异常实例变量中,则设置为true。static intINVOCATION_DEFAULT所有InvocationEvents的默认ID。static intINVOCATION_FIRST标记调用事件ID的范围的第一个整数ID。static intINVOCATION_LAST标记调用事件ID的范围的最后一个整数ID。protected Objectnotifier在Runnable.run()方法返回或抛出异常之后或事件处理完毕后,将立即调用其notifyAll()方法的(可能为空)的对象。protected RunnablerunnableRunnable的run()方法将被调用。-
Fields inherited from class java.awt.AWTEvent
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_MASK
-
Fields inherited from class java.util.EventObject
source
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedInvocationEvent(Object source, int id, Runnable runnable, Object notifier, boolean catchThrowables)构造一个InvocationEvent具有指定源和ID将执行可运行的run时调度方法。InvocationEvent(Object source, Runnable runnable)构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。InvocationEvent(Object source, Runnable runnable, Object notifier, boolean catchThrowables)构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。InvocationEvent(Object source, Runnable runnable, Runnable listener, boolean catchThrowables)构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voiddispatch()执行Runnable的run()方法,并在run()返回或引发异常时通知通知程序(如果有)。异常getException()返回在执行Runnable的run()方法时捕获的任何异常。ThrowablegetThrowable()返回在执行Runnable的run()方法时捕获的任何Throwable。longgetWhen()返回发生此事件的时间戳。booleanisDispatched()返回true如果事件被分派或者在发送任何异常被抛出,false否则。StringparamString()返回标识此事件的参数字符串。-
Methods inherited from class java.util.EventObject
getSource
-
-
-
-
字段详细信息
-
INVOCATION_FIRST
public static final int INVOCATION_FIRST
标记调用事件ID的范围的第一个整数ID。- 另请参见:
- Constant Field Values
-
INVOCATION_DEFAULT
public static final int INVOCATION_DEFAULT
所有InvocationEvents的默认ID。- 另请参见:
- Constant Field Values
-
INVOCATION_LAST
public static final int INVOCATION_LAST
标记调用事件ID的范围的最后一个整数ID。- 另请参见:
- Constant Field Values
-
runnable
protected Runnable runnable
Runnable的run()方法将被调用。
-
notifier
protected volatile Object notifier
在Runnable.run()方法返回或抛出异常之后或事件处理完毕后,将立即调用其notifyAll()方法的(可能为空)的对象。- 另请参见:
-
isDispatched()
-
catchExceptions
protected boolean catchExceptions
如果dispatch()捕获Throwable并将其存储在异常实例变量中,则设置为true。 如果为false,则Throwables将传播到EventDispatchThread的调度循环。
-
-
构造方法详细信息
-
InvocationEvent
public InvocationEvent(Object source, Runnable runnable)
构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。这是一个方便的构造函数。 调用表单
InvocationEvent(source, runnable)行为方式与调用InvocationEvent(source, runnable, null, false)的方式完全相同 。此方法抛出
IllegalArgumentException如果source为null。- 参数
-
source- 发起事件的Object -
runnable-该Runnable,其run方法将被执行 - 异常
-
IllegalArgumentException- 如果source为空 - 另请参见:
-
EventObject.getSource(),InvocationEvent(Object, Runnable, Object, boolean)
-
InvocationEvent
public InvocationEvent(Object source, Runnable runnable, Object notifier, boolean catchThrowables)
构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。 如果通知程序nullnotifyAll()将在run已经返回或抛出异常后立即调用。调用表单
InvocationEvent(source, runnable, notifier, catchThrowables)行为方式与调用InvocationEvent(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables)的方式完全相同 。此方法抛出
IllegalArgumentException如果source为null。- 参数
-
source- 发起事件的Object -
runnable-该Runnable,其run方法将被执行 -
notifier-Object其notifyAll方法将在Runnable.run后Runnable.run已返回或抛出异常或事件处理完毕 -
catchThrowables- 指定在执行Runnable的run方法时是否dispatch应该捕获Throwable,或者应该将这些Throwables传播到EventDispatchThread的调度循环 - 异常
-
IllegalArgumentException- 如果source为空 - 另请参见:
-
EventObject.getSource(),InvocationEvent(Object, int, Runnable, Object, boolean)
-
InvocationEvent
public InvocationEvent(Object source, Runnable runnable, Runnable listener, boolean catchThrowables)
构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。 如果听者不null,listener.run()将被调用后立即run又回来了,抛出一个异常,或者被设置在事件。此方法抛出
IllegalArgumentException如果source为null。- 参数
-
source- 起源于事件的Object -
runnable-该Runnable,其run方法将被执行 -
listener-Runnable的run()方法将在InvocationEvent被调用或处理的run()方法 -
catchThrowables- 指定在执行Runnable的run方法时是否dispatch应该捕获Throwable,或者应该将这些Throwables传播到EventDispatchThread的调度循环 - 异常
-
IllegalArgumentException- 如果source为空
-
InvocationEvent
protected InvocationEvent(Object source, int id, Runnable runnable, Object notifier, boolean catchThrowables)
构造一个InvocationEvent具有指定源和ID将执行可运行的run时调度方法。 如果通知是非null,notifyAll将它称为后立即run返回或抛出异常。此方法抛出
IllegalArgumentException如果source为null。- 参数
-
source- 起始事件的Object -
id- 表示事件类型的整数。 有关允许值的信息,请参阅InvocationEvent的类说明 -
runnable-该Runnable,其run方法将被执行 -
notifier-Object的notifyAll方法将在Runnable.run之后被调用返回或抛出异常或事件被处理之后 -
catchThrowables- 指定在执行Runnable的run方法时是否dispatch应该捕获Throwable,或者应该将这些Throwables传播到EventDispatchThread的调度循环 - 异常
-
IllegalArgumentException- 如果source为空 - 另请参见:
-
EventObject.getSource(),AWTEvent.getID()
-
-
方法详细信息
-
dispatch
public void dispatch()
执行Runnable的run()方法,并在run()已返回或抛出异常时通知通知程序(如果有)。- Specified by:
-
dispatch在接口ActiveEvent - 另请参见:
-
isDispatched()
-
getException
public 异常 getException()
返回在执行Runnable的run()方法时捕获的任何异常。- 结果
- 引用异常,如果被抛出; 如果没有抛出异常,或者如果此InvocationEvent没有捕获异常,则为null
-
getThrowable
public Throwable getThrowable()
返回在执行Runnable的run()方法时捕获的任何Throwable。- 结果
- 引用Throwable如果被抛出; 如果没有抛出Throwable,或者如果此InvocationEvent不捕获Throwables,则为null
- 从以下版本开始:
- 1.5
-
getWhen
public long getWhen()
返回发生此事件的时间戳。- 结果
- 这个事件的时间戳
- 从以下版本开始:
- 1.4
-
isDispatched
public boolean isDispatched()
返回true如果事件被分派或者在发送任何异常被抛出,false否则。 该方法应该被调用notifier.wait()方法的等待线程调用。 由于虚假唤醒是可能的(如Object.wait()中所述 ),该方法应该在等待循环中使用,以确保事件被分派:while (!event.isDispatched()) { notifier.wait(); }如果等待线程在不调度事件的情况下唤醒,则isDispatched()方法返回false,并且while循环再次执行,从而导致唤醒线程恢复到等待模式。如果
notifier.notifyAll()发生在等待线程进入notifier.wait()方法之前,while循环确保等待线程不会进入notifier.wait()方法。 否则,不能保证等待线程从等待中醒来。- 结果
-
true如果事件已经调度,或者任何异常在调度时抛出,false否则 - 从以下版本开始:
- 1.7
- 另请参见:
-
dispatch(),notifier,catchExceptions
-
paramString
public String paramString()
返回标识此事件的参数字符串。 此方法对于事件记录和调试很有用。- 重写:
-
paramString在AWTEvent - 结果
- 标识事件及其属性的字符串
-
-