public class EventQueueextends ObjectEventQueue 是一个与平台无关的类,它将来自于底层同位体类和受信任的应用程序类的事件列入队列。

它封装了异步事件指派机制,该机制从队列中提取事件,然后通过对此 EventQueue 调用 dispatchEvent(AWTEvent) 方法来指派这些事件(事件作为参数被指派)。该机制的特殊行为是与实现有关的。

指派实际排入到该队列中的事件(注意,正在发送到 EventQueue 中的事件可以被合并)的唯一要求是:

按顺序指派。 

也就是说,不允许同时从该队列中指派多个事件。 

指派顺序与它们排队的顺序相同。 

也就是说,如果 AWTEvent A 比 AWTEvent B 先排入到 EventQueue 中,那么事件 B 不能在事件 A 之前被指派。

一些浏览器将不同代码基中的 applet 分成独立的上下文,并在这些上下文之间建立一道道墙。在这样的场景中,每个上下文将会有一个 EventQueue。其他浏览器将所有的 applet 放入到同一个上下文中,这意味着所有 applet 只有一个全局 EventQueue。该行为是与实现有关的。有关更多信息,请参照浏览器的文档。

postEvent

public void postEvent(AWTEvent theEvent)将一个 1.1 样式的事件发送到 EventQueue 中。如果在队列中存在具有相同 ID 和事件源的事件,则调用源 Component 的 coalesceEvents 方法。 





参数:

theEvent - java.awt.AWTEvent 的实例,或者是它的子类 

抛出: 

NullPointerException - 如果 theEvent 为 null





--------------------------------------------------------------------------------





getNextEvent

public AWTEvent getNextEvent()

                      throws InterruptedException从 EventQueue 中移除一个事件,并返回该事件。在另一个线程发送事件之前该方法被阻塞。 





返回:

下一个 AWTEvent 

抛出: 

InterruptedException - 如果任何线程中断了此线程





--------------------------------------------------------------------------------





peekEvent

public AWTEvent peekEvent()返回 EventQueue 上的第一个事件,而不移除它。 





返回:

第一个事件





--------------------------------------------------------------------------------





peekEvent

public AWTEvent peekEvent(int id)返回指定 id(如果有) 的第一个事件。 





参数:

id - 所需事件类型的 id 

返回:

指定 id 的第一个事件,如果没有这样的事件,则返回 null





--------------------------------------------------------------------------------





dispatchEvent

protected void dispatchEvent(AWTEvent event)指派一个事件。指派事件的方式取决于事件的类型和事件的源对象的类型: 





事件类型 源类型 指派 

ActiveEvent 所有 event.dispatch() 

其他 Component source.dispatchEvent(AWTEvent) 

其他 MenuComponent source.dispatchEvent(AWTEvent) 

其他 其他 无动作(忽略) 













参数:

event - java.awt.AWTEvent 的实例或者是它的子类 

抛出: 

NullPointerException - 如果 event 为 null

从以下版本开始: 

1.2 





--------------------------------------------------------------------------------





getMostRecentEventTime

public static long getMostRecentEventTime()返回最近事件的时间戳(如果有),该事件从 EventQueue(它与正在调用的线程相关)进行指派。如果具有时间戳的事件目前正被指派,则返回它的时间戳。如果没有事件被指派,则返回 EventQueue 的初始化时间。在 JDK 的当前版本中,只有 InputEvent、ActionEvent 和 InvocationEvent 有时间戳;但是,JDK 的未来版本可能将时间戳添加到其他事件类型中。注意,该方法只应该从应用程序事件的指派线程进行调用。如果从另一个线程调用该方法,则返回当前系统的时间(由
System.currentTimeMillis() 报告)。 





返回:

最后一次 InputEvent 的时间戳,要指派的 ActionEvent 或 InvocationEvent,如果在不同于事件指派线程的线程上调用该方法,则返回 System.currentTimeMillis()

从以下版本开始: 

1.4 

另请参见:

InputEvent.getWhen(), ActionEvent.getWhen(), InvocationEvent.getWhen()





--------------------------------------------------------------------------------





getCurrentEvent

public static AWTEvent getCurrentEvent()返回当前正在被 EventQueue(它与正在调用的线程相关)指派的事件。只有某个方法需要访问事件时,但是并没有被设计为可以将事件作为参数来接受,则此方法很有用。注意,该方法应该只从应用程序的事件指派线程进行调用。如果从另一个线程调用该方法,则返回 null。 





返回:

当前正被指派的事件;如果调用该方法的线程不是事件指派线程,则返回 null

从以下版本开始: 

1.4 





--------------------------------------------------------------------------------





push

public void push(EventQueue newEventQueue)用指定的事件队列替换现有的 EventQueue。任何挂起的事件都被传输到 EventQueue 以备处理。 





参数:

newEventQueue - 要使用的 EventQueue(或其子类的)的实例 

抛出: 

NullPointerException - 如果 newEventQueue 为 null

从以下版本开始: 

1.2 

另请参见:

pop()





--------------------------------------------------------------------------------





pop

protected void pop()

            throws EmptyStackException停止使用此 EventQueue 指派事件。任何挂起的事件都被传输到以前的 EventQueue 以备处理。 

警告:为了避免死锁,不要在子类中将该方法声明为 synchronized。 









抛出: 

EmptyStackException - 如果以前没有对该 EventQueue 执行 push 操作

从以下版本开始: 

1.2 

另请参见:

push(java.awt.EventQueue)





--------------------------------------------------------------------------------





isDispatchThread

public static boolean isDispatchThread()如果正在调用的线程是当前 AWT EventQueue 的指派线程,则返回 true。使用此调用确保给定的任务正在当前 AWT EventDispatchThread 上执行(或没有执行)。 





返回:

如果给定的任务正在当前 AWT EventQueue 的指派线程上运行,则返回 true。

从以下版本开始: 

1.2 





--------------------------------------------------------------------------------





invokeLater

public static void invokeLater(Runnable runnable)导致 runnable 的 run 方法在 the system EventQueue 的指派线程中被调用。 





参数:

runnable - Runnable 对象,其 run 方法应该在 EventQueue 上同步执行

从以下版本开始: 

1.2 

另请参见:

invokeAndWait(java.lang.Runnable)





--------------------------------------------------------------------------------





invokeAndWait

public static void invokeAndWait(Runnable runnable)

                          throws InterruptedException,

                                 InvocationTargetException导致 runnable 的 run 方法在 the system EventQueue 的指派线程中被调用。在所有挂起事件被处理后才发生。在这发生之前调用被阻塞。如果从事件指派线程进行调用,则该方法将抛出 Error。 





参数:

runnable - Runnable 对象,其 run 方法应该在 EventQueue 上同步执行 

抛出: 

InterruptedException - 如果任何线程中断了该线程 

InvocationTargetException - 如果运行 runnable 时抛出一个 throwable

从以下版本开始: 

1.2 

另请参见:

invokeLater(java.lang.Runnable)

EventQueue.invokeLater(new Runnable())的更多相关文章

  1. Java Swing 中使用 EventQueue

    public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { ...

  2. JAVA基础代码分享--求圆面积

    问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...

  3. Java基础学习 -- GUI之 事件处理基础

    事件处理可以简单地这么理解,当有一个事件产生,程序要根据这个事件做出响应.比如,我们做了一个可以通过按钮改变背景颜色的窗口,当我们点击按钮时便产生了一个事件,程序会根据这个事件来做出响应,也就是去改变 ...

  4. Java基础学习总结 -- 图形用户界面GUI

    虽然目前Java算不上前端开发的主力,但是作为Java入门基础的一部分,学习Java的GUI编程还是有必要的,而且可以做出一些小且有趣的图形程序来提高学习热情.本篇学习总结均为一个Beginner的笔 ...

  5. Java界面

    JFrame.java package myProject; import java.awt.Color;import java.awt.EventQueue; import javax.swing. ...

  6. 用java实现简易PC版2048

    import java.awt.Color; import java.awt.EventQueue; import java.awt.BorderLayout; import java.awt.Flo ...

  7. ArcGisEngineForJava开发

    ArcGIS Engine control examples 一.利用Visual JavaBeans来构建应用程序 这种方案是针对使用可视化的Java组件,想要来构建和部署应用程序的开发人员.Jav ...

  8. MyFirstgame 拼图

    package auto; /** * IDA*求解15puzzle问题 * IDA*整合了IDDFS和A*算法.其中IDDFS控制了求解过程中的内存开销,A*算法意味着"启发式" ...

  9. login

    package addresslist; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.event.Act ...

随机推荐

  1. Ubuntu下配置Telnet服务器

    1. 首先介绍linux中的守护进程 在Linux系统中有一个特殊的守护进程inetd(InterNET services Daemon),它用于Internet标准服务,通常在系统启动时启动.通过命 ...

  2. 03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池

     DBCP数据源 使用DBCP数据源,需要导入两个jar包 Commons-dbcp.jar:连接池的实现 Common-pool.jar:连接池实现的依赖库. 导入mysql的jar包. DBC ...

  3. 插件占坑,四大组件动态注册前奏(二) 系统Service的启动流程

    转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52203903 前言:为什么要了解系统Activity,Service,BroadCas ...

  4. Nhibernate系列学习之(一) ORM and Nhibernate入门实例解析

    最近框架项目需要,数据层想使用Nhibernate,代替传统的sql语句的写法,更加使用面向对象的思维来维护实体与数据库的这层关系映射(ORM),好在之前接触过Java时学习使用了Hibernate, ...

  5. 一个iOS6系统bug+一个iOS7系统bug

    先看实际工作中遇到的两个bug:(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:

  6. 如何在SpriteBuilder中设置对象的通用属性

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中可以为对象设置自定义类从 ...

  7. 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

     使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...

  8. 手动开发动态资源之servlet初步

    1.1 静态资源和动态资源的区别 静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. 1.2动态资源的开发技术 Serv ...

  9. matlab中 mcc、mbuild和mex命令详解

    先简单的说说mcc.mbuild和mex到底怎么回事: mcc将M文件转换成C/C++文件和相应的MEX包裹文件(需要Matlab编辑器),但在特定条件下可以自动调用mbuild或者mex mex将C ...

  10. UNIX环境高级编程——线程同步之读写锁以及属性

    读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程.当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 互 ...