模块  java.desktop
软件包  java.awt

Class EventQueue


  • public class EventQueue
    extends Object
    EventQueue是一个独立于平台的类, EventQueue来自底层对等类和受信任应用程序类的事件进行排队。

    它封装了从队列中提取事件,并通过调用调度它们异步事件指派机制dispatchEvent(AWTEvent)这种方法EventQueue与该事件被分派作为参数。 该机器的特定行为取决于实现。 唯一的要求是实际排队到此队列的事件(请注意,可以合并发布到EventQueue事件):

    顺序。
    也就是说,不允许同时调度来自此队列的多个事件。
    按照他们入队的顺序排列。
    也就是说,如果AWTEvent A在AWTEvent B之前排队到EventQueue ,那么事件B将不会在事件A之前被调度。

    有些浏览器将不同代码库中的applet分成不同的上下文,并在这些上下文之间建立隔阂。 在这种情况下,每个上下文将有一个EventQueue 其他浏览器将所有applet放在同一个上下文中,这意味着所有applet只有一个全局的EventQueue 此行为取决于实现。 有关更多信息,请参阅浏览器的文档。

    有关事件派遣机器的线程问题的信息,请参阅AWT Threading Issues

    从以下版本开始:
    1.1
    • 构造方法详细信息

      • EventQueue

        public EventQueue()
        初始化 EventQueue的新实例。
    • 方法详细信息

      • postEvent

        public void postEvent​(AWTEvent theEvent)
        将一个1.1风格的活动发布到EventQueue 如果队列中存在具有相同ID和事件源的现有事件,则将调用源ComponentcoalesceEvents方法。
        参数
        theEvent -实例 java.awt.AWTEvent ,或它的子类
        异常
        NullPointerException - 如果 theEventnull
      • getNextEvent

        public AWTEvent getNextEvent()
                              throws InterruptedException
        EventQueue删除事件并将其返回。 此方法将阻塞,直到另一个线程发布了一个事件。
        结果
        接下来的 AWTEvent
        异常
        InterruptedException - 如果有任何线程中断了该线程
      • peekEvent

        public AWTEvent peekEvent()
        返回 EventQueue上的第一个事件而不删除它。
        结果
        第一个事件
      • peekEvent

        public AWTEvent peekEvent​(int id)
        返回具有指定标识的第一个事件(如果有)。
        参数
        id - 所需事件类型的ID
        结果
        如果没有这样的事件,则指定id的第一个事件或 null
      • dispatchEvent

        protected void dispatchEvent​(AWTEvent event)
        派遣活动。 调度事件的方式取决于事件的类型和事件源对象的类型: Event types, source types, and dispatch methods Event Type Source Type Dispatched To ActiveEvent Any event.dispatch() Other Component source.dispatchEvent(AWTEvent) Other MenuComponent source.dispatchEvent(AWTEvent) Other Other No action (ignored)
        参数
        event -实例 java.awt.AWTEvent ,或它的子类
        异常
        NullPointerException - 如果 eventnull
        从以下版本开始:
        1.2
      • getMostRecentEventTime

        public static long getMostRecentEventTime()
        返回具有时间戳的最新事件的时间戳,该时间戳是从与调用线程关联的EventQueue分派的。 如果当前正在调度具有时间戳的事件,则将返回其时间戳。 如果尚未调度任何事件,则将返回EventQueue的初始化时间。在当前版本的JDK中,只有InputEvent s, ActionEvent s和InvocationEvent具有时间戳; 但是,JDK的未来版本可能会将时间戳添加到其他事件类型。 请注意,只应从应用程序的event dispatching thread调用此方法。 如果从另一个线程调用此方法,则将返回当前系统时间(由System.currentTimeMillis()报告)。
        结果
        的时间戳最后 InputEventActionEvent ,或 InvocationEvent被分派,或 System.currentTimeMillis()如果该方法在不同于事件指派线程的线程上调用
        从以下版本开始:
        1.4
        另请参见:
        InputEvent.getWhen()ActionEvent.getWhen()InvocationEvent.getWhen()isDispatchThread()
      • getCurrentEvent

        public static AWTEvent getCurrentEvent()
        返回与调用线程关联的EventQueue当前正在调度的事件。 如果方法需要访问事件,但这不是设计为接收对它的引用作为参数,这将非常有用。 请注意,只应从应用程序的事件派发线程调用此方法。 如果从另一个线程调用此方法,则返回null。
        结果
        当前正在调度的事件,如果在事件调度线程以外的线程上调用此方法,则返回null
        从以下版本开始:
        1.4
      • push

        public void push​(EventQueue newEventQueue)
        用指定的替换现有的EventQueue 任何待处理事件都将传输到新的EventQueue以供其处理。
        参数
        newEventQueue - 要使用的 EventQueue (或其子类)实例
        异常
        NullPointerException - 如果 newEventQueuenull
        从以下版本开始:
        1.2
        另请参见:
        pop()
      • pop

        protected void pop()
                    throws EmptyStackException
        使用此EventQueue停止分派事件。 任何待处理事件都将传输到先前的EventQueue进行处理。

        警告:为避免死锁,请不要在子类中声明此方法已同步。

        异常
        EmptyStackException - 如果之前没有对此 EventQueue
        从以下版本开始:
        1.2
        另请参见:
        push(java.awt.EventQueue)