Module java.desktop
Package java.awt.event

Class InvocationEvent

所有实现的接口:
ActiveEvent, Serializable

public class InvocationEvent extends AWTEvent implements ActiveEvent
当由AWT事件分发线程调度时,此事件将在Runnable上执行run()方法。此类可用作ActiveEvent的参考实现,而无需声明新类并定义dispatch()

通过调用invokeLaterinvokeAndWait,将此类的实例放置在EventQueue上。客户端代码可以利用这一事实编写替代函数,用于invokeLaterinvokeAndWait,而无需在任何AWTEventListener对象中编写特殊代码。

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

自:
1.2
参见:
  • Field Details

    • 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
      将调用Runnable的run()方法。
    • notifier

      protected volatile Object notifier
      (可能为null的)Object,其notifyAll()方法将在Runnable.run()方法返回或抛出异常后立即调用,或在事件被处理后调用。
      参见:
    • catchExceptions

      protected boolean catchExceptions
      如果dispatch()捕获Throwable并将其存储在异常实例变量中,则设置为true。如果为false,则Throwables将传播到EventDispatchThread的调度循环。
  • Constructor Details

    • InvocationEvent

      public InvocationEvent(Object source, Runnable runnable)
      使用指定的源构造一个InvocationEvent,当调度时将执行runnable的run()方法。

      这是一个便利构造函数。形式为InvocationEvent(source, runnable)的调用与调用InvocationEvent(source, runnable, null, false)的调用行为完全相同。

      如果sourcenull,此方法将抛出IllegalArgumentException

      参数:
      source - 产生事件的Object
      runnable - 将执行其run()方法的Runnable
      抛出:
      IllegalArgumentException - 如果source为null
      参见:
    • InvocationEvent

      public InvocationEvent(Object source, Runnable runnable, Object notifier, boolean catchThrowables)
      使用指定的源构造一个InvocationEvent,当调度时将执行runnable的run()方法。如果notifier为非null,则在run()返回或抛出异常后将立即在其上调用notifyAll()

      形式为InvocationEvent(source, runnable, notifier, catchThrowables)的调用与调用InvocationEvent(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables)的调用行为完全相同。

      如果sourcenull,此方法将抛出IllegalArgumentException

      参数:
      source - 产生事件的Object
      runnable - 将执行其run()方法的Runnable
      notifier - 在run()返回或抛出异常后或事件被处理后立即调用其notifyAll方法的Object
      catchThrowables - 指定dispatch在执行Runnablerun()方法时是否应捕获Throwable,或者应将这些Throwables传播到EventDispatchThread的调度循环
      抛出:
      IllegalArgumentException - 如果source为null
      参见:
    • InvocationEvent

      public InvocationEvent(Object source, Runnable runnable, Runnable listener, boolean catchThrowables)
      使用指定的源构造一个InvocationEvent,当调度时将执行runnable的run()方法。如果listener为非null,则在run返回、抛出异常或事件被处理后将立即调用listener.run()

      如果sourcenull,此方法将抛出IllegalArgumentException

      参数:
      source - 产生事件的Object
      runnable - 将执行其run()方法的Runnable
      listener - 在InvocationEvent被调度或处理后将调用其run()方法的Runnable
      catchThrowables - 指定dispatch在执行Runnablerun()方法时是否应捕获Throwable,或者应将这些Throwables传播到EventDispatchThread的调度循环
      抛出:
      IllegalArgumentException - 如果source为null
    • InvocationEvent

      protected InvocationEvent(Object source, int id, Runnable runnable, Object notifier, boolean catchThrowables)
      使用指定的源和ID构造一个InvocationEvent,当调度时将执行runnable的run()方法。如果notifier为非null,则在run()返回或抛出异常后将立即在其上调用notifyAll()

      如果sourcenull,此方法将抛出IllegalArgumentException

      参数:
      source - 产生事件的Object
      id - 指示事件类型的整数。有关允许的值的信息,请参阅InvocationEvent的类描述
      runnable - 将要执行的Runnablerun()方法
      notifier - 在Runnable.run返回或抛出异常后或事件被处理后调用其notifyAll方法的Object
      catchThrowables - 指定在执行Runnablerun()方法时,dispatch是否应捕获Throwable,或者应将这些Throwable传播到EventDispatchThread的dispatch循环中
      抛出:
      IllegalArgumentException - 如果source为null
      参见:
  • Method Details

    • dispatch

      public void dispatch()
      执行run()方法并在run()返回或抛出异常时通知通知器(如果有)。
      指定者:
      dispatch 在接口 ActiveEvent
      参见:
    • getException

      public Exception getException()
      返回在执行run()方法时捕获的任何异常。
      返回:
      如果抛出异常,则返回对异常的引用;如果未抛出异常或此InvocationEvent不捕获异常,则返回null
    • getThrowable

      public Throwable getThrowable()
      返回在执行run()方法时捕获的任何Throwable。
      返回:
      如果抛出Throwable,则返回对Throwable的引用;如果未抛出Throwable或此InvocationEvent不捕获Throwable,则返回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()方法返回falsewhile循环再次执行,从而导致唤醒的线程恢复到等待模式。

      如果notifier.notifyAll()在等待线程进入notifier.wait()方法之前发生,则while循环确保等待线程不会进入notifier.wait()方法。否则,不能保证等待线程将从等待中被唤醒。

      返回:
      如果事件已被分派,或在分派时抛出任何异常,则返回true;否则返回false
      自:
      1.7
      参见:
    • paramString

      public String paramString()
      返回标识此事件的参数字符串。此方法对事件记录和调试很有用。
      覆盖:
      paramString 在类 AWTEvent
      返回:
      标识事件及其属性的字符串