本文将详细解释如何分析Swing线程的内容。这篇文章的内容质量很高,所以边肖会分享给大家参考。希望大家看完这篇文章能有所了解。
一. 事件
1.事件来源:本地系统、应用程序本身
2.所有事件都存储在队列中。
3.Java.awt.EventQueue从队列中获取数据并调度它。事件队列的调度机制由单独的线程EDT(事件调度线程)处理。
二.绘制
如前一节所述,paintImmediately()就像一个门户,告诉Swing控件自己绘制,确保所有需要的绘制都正确进行。此方法也可用于发出同步绘图请求。顾名思义,有时控件需要根据其内部状态实时改变外观。(例如,就像JScrollPane做滚动操作一样)。
程序不应该直接调用这个方法,除非需要实时绘图。这是因为异步重绘()可以有效地合并多个重叠的请求,但是直接调用paintImmediately()则不能。另外,调用这个方法的规则是必须从事件分发线程中调用;它不是为你的多线程绘图代码设计的!要查看Swing单线程模式的详细信息,请参考收集的文章《Swing Thread》。
1.Swing线程包括:主线程(应用程序的主要方法)、工具包线程(捕获系统事件)和EDT(调度捕获的线程)。
2.异步重绘请求:所有异步请求都是repaint()的变体,包括整个构图的绘制和某个构图区域的绘制。
3.同步绘图请求:component.paint立即()和component.paint()
三.渲染
1.画家算法
2 .油漆组件()
3 .油漆()
4.setpaque()
四.双缓冲jsci . swing的超类是一个抽象类,叫做JDoubleBufferedComponent。这个类比较简单,它为将要构建的图形提供了双缓冲功能。双缓冲指示接收组件是否应该使用缓冲区进行绘制。如果双缓冲设置为真,该组件的所有图片将在屏幕外绘图缓冲区中完成。屏幕外绘图缓冲区稍后将被复制到屏幕上。根据Javadocs的说法,Swing绘图系统总是使用* * *的双缓冲区。如果一个组件有一个缓冲区,并且它的一个父组件也有一个缓冲区,则使用它的父组件的缓冲区。
JDoubleBufferedComponent依靠自身,而不是Swing的双缓冲来实现JComponent对双缓冲的处理。这为使用JSci.swing包的开发人员提供了比仅使用swing更细粒度的双缓冲控制。
五.Swing线程
1.Swing线程包括:主线程(应用程序的主要方法)、工具包线程(捕获系统事件)和EDT(调度捕获的线程)。
2.线程模型:单一规则,所以遵循这个规则,让EDT尽可能的分发事件。
3.invokeLater()
4.isEventDispatchThread()
5.invokeAndWait
六.定时器和事件派发1 . Java . util . timer
javax.swing.Timer
七.SwingWorker
1 .完成()
2.doInBackground()
3 .获取
4 .过程
关于如何解析Swing线程的内容,我希望在这里分享。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151901.html