EventQueue.invokeLater(new Runnable())
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())的更多相关文章
- Java Swing 中使用 EventQueue
public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { ...
- JAVA基础代码分享--求圆面积
问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...
- Java基础学习 -- GUI之 事件处理基础
事件处理可以简单地这么理解,当有一个事件产生,程序要根据这个事件做出响应.比如,我们做了一个可以通过按钮改变背景颜色的窗口,当我们点击按钮时便产生了一个事件,程序会根据这个事件来做出响应,也就是去改变 ...
- Java基础学习总结 -- 图形用户界面GUI
虽然目前Java算不上前端开发的主力,但是作为Java入门基础的一部分,学习Java的GUI编程还是有必要的,而且可以做出一些小且有趣的图形程序来提高学习热情.本篇学习总结均为一个Beginner的笔 ...
- Java界面
JFrame.java package myProject; import java.awt.Color;import java.awt.EventQueue; import javax.swing. ...
- 用java实现简易PC版2048
import java.awt.Color; import java.awt.EventQueue; import java.awt.BorderLayout; import java.awt.Flo ...
- ArcGisEngineForJava开发
ArcGIS Engine control examples 一.利用Visual JavaBeans来构建应用程序 这种方案是针对使用可视化的Java组件,想要来构建和部署应用程序的开发人员.Jav ...
- MyFirstgame 拼图
package auto; /** * IDA*求解15puzzle问题 * IDA*整合了IDDFS和A*算法.其中IDDFS控制了求解过程中的内存开销,A*算法意味着"启发式" ...
- login
package addresslist; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.event.Act ...
随机推荐
- 带你深入理解STL之Vector容器
C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...
- 《java入门第一季》之对文件和字符串进行MD5加密工具类
上一篇介绍了MD5加密算法,之前写的代码有些冗余,而且可读性很差.今天把对文本数据的加密,以及获取文件的md5值做一个封装类.代码如下: package com.itydl.utils; import ...
- Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》
之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...
- Android之Notification-android学习之旅(二)
notification常用于下拉式的消息推送. Notification的构成 Nitification的实例 1.新建一个Builder,要选Notification.compat包. 2.然后用 ...
- Android性能优化之Splash页应该这样设计
目前SplashActivity的设计 目前市场上的应用在启动时基本上都会先启动一个SplashActivity,作为一个欢迎界面,为什么这样设计呢? 个人总结有三个优点: 1.可以给用户更好的体验 ...
- CoordinatorLayout 自定义Behavior并不难,由简到难手把手带你撸三款!
先来看看最终的效果~~ 本文同步至博主的私人博客wing的地方酒馆 嗯..一个是头像上移的 另一个是模仿UC浏览器的. (PД`q.)你不是说!有三款的吗,怎么只有两款!!!! 不要急嘛... 说了从 ...
- Android初级教程之内容提供者获取联系人信息
内容提供折详细理论知识请参考之前的博文:http://blog.csdn.net/qq_32059827/article/details/51646513 这里新建了三个联系人信息,通过查看系统联系人 ...
- java设计模式---访问者模式
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自 己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自 ...
- 如何启用Oracle EBS Form监控
前言: 有时候,因某些需要,必须知道Oracle的Form被使用的情况,以方面我们做出决策: 例如,如果某个Form被使用的次数非常多,那么,这个Form的相关SQL代码就应该优先处理,以减少服务器负 ...
- Python学习笔记 - 列表生成式listComprehensions
#!/usr/bin/env python3 # -*- coding: utf-8 -*- list(range(1, 11)) # 生成1乘1,2乘2...10乘10 L = [] for x i ...