模块  java.desktop
软件包  java.awt.event

Class InvocationEvent

  • 实现的所有接口
    ActiveEventSerializable

    public class InvocationEvent
    extends AWTEvent
    implements ActiveEvent
    它执行的事件run()上的方法Runnable当通过AWT事件调度线程进行调度。 此类可用作ActiveEvent的参考实现,而不是声明新类并定义dispatch()

    通过调用invokeLaterinvokeAndWaitEventQueue的实例放在invokeAndWait 客户端代码可以使用此事实为invokeLaterinvokeAndWait编写替换函数,而无需在任何AWTEventListener对象中编写特殊情况代码。

    如果任何特定InvocationEvent实例的id参数不在INVOCATION_FIRSTINVOCATION_LAST范围内, INVOCATION_FIRST导致未指定的行为。

    从以下版本开始:
    1.2
    另请参见:
    ActiveEventEventQueue.invokeLater(java.lang.Runnable)EventQueue.invokeAndWait(java.lang.Runnable)AWTEventListenerSerialized Form
    • 字段详细信息

      • INVOCATION_FIRST

        public static final int INVOCATION_FIRST
        标记调用事件id范围的第一个整数id。
        另请参见:
        常数字段值
      • INVOCATION_DEFAULT

        public static final int INVOCATION_DEFAULT
        所有InvocationEvents的默认ID。
        另请参见:
        常数字段值
      • INVOCATION_LAST

        public static final int INVOCATION_LAST
        标记调用事件id范围的最后一个整数id。
        另请参见:
        常数字段值
      • runnable

        protected Runnable runnable
        将调用run()方法的Runnable。
      • notifier

        protected volatile Object notifier
        (可能为null)对象,其notifyAll()方法将在Runnable.run()方法返回或抛出异常之后立即调用,或者在事件处理完毕后立即调用。
        另请参见:
        isDispatched()
      • catchExceptions

        protected boolean catchExceptions
        如果dispatch()捕获Throwable并将其存储在异常实例变量中,则设置为true。 如果为false,则Throwables会传播到EventDispatchThread的调度循环。
    • 构造方法详细信息

      • InvocationEvent

        public InvocationEvent​(Object source,
                               Runnable runnable,
                               Runnable listener,
                               boolean catchThrowables)
        使用指定的源构造一个InvocationEvent ,它将在调度时执行runnable的run方法。 如果听者不nulllistener.run()将被调用后立即run又回来了,抛出一个异常,或者被设置在事件。

        此方法抛出IllegalArgumentException如果sourcenull

        参数
        source - 发起此事件的 Object
        runnable -该 Runnable ,其 run方法将被执行
        listener -该 Runnable可运行其 run()方法之后将被称为 InvocationEvent被派遣或设置
        catchThrowables - 指定 dispatch在执行 Runnablerun方法时是否应该捕获Throwable,或者应该将那些Throwables传播到EventDispatchThread的分派循环
        异常
        IllegalArgumentException - 如果 source为空
      • InvocationEvent

        protected InvocationEvent​(Object source,
                                  int id,
                                  Runnable runnable,
                                  Object notifier,
                                  boolean catchThrowables)
        构造一个InvocationEvent具有指定源和ID将执行可运行的run时调度方法。 如果通知是非nullnotifyAll将在它被称为后立即run返回或抛出异常。

        此方法抛出IllegalArgumentException如果sourcenull

        参数
        source - 起源 Object事件的 Object
        id - 指示事件类型的整数。 有关允许值的信息,请参阅InvocationEvent的类说明
        runnable -该 Runnable ,其 run方法将被执行
        notifier - ObjectnotifyAll方法将在 Runnable.run之后 Runnable.run ,返回或抛出异常或事件处理后
        catchThrowables - 指定 dispatch在执行 Runnablerun方法时是否应该捕获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()方法时捕获的任何异常。
        结果
        如果抛出异常,则引用异常; 如果没有抛出Exception或者此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()notifiercatchExceptions
      • paramString

        public String paramString()
        返回标识此事件的参数字符串。 此方法对于事件记录和调试很有用。
        重写:
        paramString在课程 AWTEvent
        结果
        标识事件及其属性的字符串