- 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 boolean
catchExceptions
如果dispatch()捕获Throwable并将其存储在异常实例变量中,则设置为true。static int
INVOCATION_DEFAULT
所有InvocationEvents的默认ID。static int
INVOCATION_FIRST
标记调用事件ID的范围的第一个整数ID。static int
INVOCATION_LAST
标记调用事件ID的范围的最后一个整数ID。protected Object
notifier
在Runnable.run()方法返回或抛出异常之后或事件处理完毕后,将立即调用其notifyAll()方法的(可能为空)的对象。protected Runnable
runnable
Runnable的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 描述 protected
InvocationEvent(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 方法 描述 void
dispatch()
执行Runnable的run()
方法,并在run()
返回或引发异常时通知通知程序(如果有)。异常
getException()
返回在执行Runnable的run()
方法时捕获的任何异常。Throwable
getThrowable()
返回在执行Runnable的run()
方法时捕获的任何Throwable。long
getWhen()
返回发生此事件的时间戳。boolean
isDispatched()
返回true
如果事件被分派或者在发送任何异常被抛出,false
否则。String
paramString()
返回标识此事件的参数字符串。-
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
时调度方法。 如果通知程序null
notifyAll()
将在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
- 结果
- 标识事件及其属性的字符串
-
-