浅析Swing线程包括内容

开发 后端
本文简单介绍Swing线程包括内容:主线程(应用程序的主方法),工具包线程(扑获系统事件),EDT(将扑获的线程派发)

一. 事件
1.事件来源:本地系统,应用程序本身
2.所有的事件都存储在一个队列里面
3.Java.awt.EventQueue从队列中取数据并派发,EventQueue的派发机制由单独的线程EDT(Event Dispatch Thread)处理。

二.绘制
在前一个小节中描述的, paintImmediately() 就象是一个入口告诉一个 Swing的控件来绘制它自己, 确信所有需要的绘制正确发生. 这个方法也可能用于做同步绘制请求. 就象它的名字所暗示的那样, 有时候控件需要实时地根据它的内部状态来改变它的外观. (e.g. 就象一个 JScrollPane 做滚动操作的时候).

程序不应该直接调用这个方法, 除非有实时绘制的需要. 这是因为异步的repaint() 会使多个重叠的请求有效地合并, 而 paintImmediately() 的直接调用不会. 另外, 调用这个方法的规则是它必须从事件分配线程中调用; 它不是为你的多线程绘制代码所设计的! 要看到 Swing 的单线程模式的细节, 请参见收集的文章 "Swing线程".
1.Swing线程包括:主线程(应用程序的主方法),工具包线程(扑获系统事件),EDT(将扑获的线程派发)
2.异步重绘请求:所有异步请求都是repaint()的变体,包括整个组建的绘制和组建某个区域的绘制
3.同步绘制请求:Jcomponent.paintImmediately()和Component.paint()

三.渲染
1.画家算法
2.paintComponent()
3.paint()
4.setpaque()

四.双缓冲
JSci.swing 的超类是一个抽象类,被称为 JDoubleBufferedComponent。这个类相对来说比较简单,它为自己将要建立于其上的图形提供双缓冲功能。 双缓冲指出接收组件是否应该使用缓冲区来绘画。如果双缓冲被设置为 true,那么来自这个组件的所有图画都将在屏外(offscreen)绘画缓冲区完成。屏外绘画缓冲区稍后将被复制到屏幕上。根据 Javadocs,Swing 绘画系统总是使用***的双缓冲区。如果一个组件有缓冲,而且它的其中一个父组件也有缓冲,那么就使用它的父组件的缓冲区。

JDoubleBufferedComponent 依靠自己而不是 Swing 的双缓冲实现 JComponent 处理双缓冲。这为使用 JSci.swing 包的开发者提供了比只使用 Swing 更细粒度的对双缓冲的控制。

五.Swing线程

1.Swing线程包括:主线程(应用程序的主方法),工具包线程(扑获系统事件),EDT(将扑获的线程派发)
2.线程模型:单一的规则,所以要遵从此规则,尽量将事件让EDT进行派发。
3.invokeLater()
4.isEventDispatchThread()
5.invokeAndWait

六.定时器和事件派发
1.java.util.Timer
2.javax.swing.Timer

七.SwingWorker
1.done()
2.doInBackground()
3.get
4.process

【编辑推荐】

  1. Swing控件可以实现水平翻转
  2. 浅析Swing体系结构
  3. 介绍Swing菜单和菜单项
  4. 浅谈学习Swing组件
  5. Swing模型和渲染器
责任编辑:佚名 来源: 机械工业出版社
相关推荐

2012-01-17 17:21:24

JavaSwing

2009-07-16 09:54:44

LookupEventSwing线程

2009-07-10 10:37:50

Swing Set示例

2009-07-10 14:20:01

AcceleratorJava Swing

2009-07-15 16:50:07

Swing项目

2009-07-15 13:46:26

Swing体系结构

2009-07-15 11:02:32

Swing组件

2009-07-17 16:41:48

actionPerfoSwing

2009-07-16 17:01:09

Swing字符串

2009-07-17 11:30:44

Swing Image

2009-07-16 08:53:03

Swing任务Swing线程

2009-07-15 10:06:54

Swing实现MDI

2009-07-15 17:33:08

Swing客户端

2009-07-14 14:00:47

iData技术

2009-07-10 17:24:07

Swing应用程序

2009-07-15 18:06:38

Swing线程

2014-08-13 10:41:08

linux线程

2009-07-15 17:09:32

Swing线程

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-16 11:19:48

外部线程Swing组件
点赞
收藏

51CTO技术栈公众号