Module  java.desktop
软件包  java.awt.event

Class InvocationEvent

  • All Implemented Interfaces:
    ActiveEventSerializable


    public class InvocationEvent
    extends AWTEvent
    implements ActiveEvent
    在AWT事件调度程序线程调度时,在Runnable执行run()方法的事件。 该类可以用作ActiveEvent的参考实现,而不是声明一个新类并定义dispatch()

    该类的EventQueue通过拨打invokeLaterinvokeAndWait 客户端代码可以使用这个事实来编写invokeLaterinvokeAndWait替换函数,而不需要在任何AWTEventListener对象中编写特殊情况代码。

    任何特定InvocationEvent实例的id参数不在从INVOCATION_FIRSTINVOCATION_LAST的范围内,将会引起未指定的行为。

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

      • 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,
                               Runnable listener,
                               boolean catchThrowables)
        构造一个InvocationEvent与将执行可运行的指定的源run时调度方法。 如果听者不nulllistener.run()将被调用后立即run又回来了,抛出一个异常,或者被设置在事件。

        此方法抛出IllegalArgumentException如果sourcenull

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

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