- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
swing框架
swing框架
Swing框架中是指Component,Model,UI delegate个Renderer。
Swing 直接调用Java2D来实现组件的绘制!这与AWT或者SWT都是不同的。
当然swing是建立在AWT基础之上的,比如一些等层容器都是直接使用AWT实现的,Java 2D API是平台独立的。
Swing模型和渲染器
Swing使用的是变体的MVC架构,即Model-Component-UI Delegate。
尽量使用批处理操作,尽量减少触发事件的数量!
当初始化或者需要完全替换模型的内容时,考虑重新生成模型,不要使用已经存在的 模
型,已存在模型上已经保持了很多的侦听器,新生成的模型没有侦听器,这样避免了不必 要
的处理函数的调用。
触发事件数量严重影响你的程序启动时间,也会影响打开对话框和相似操作的时间。
Swing框架之Component
Swing 的基础体系结构中的四大基本对象 Component 、 Model 、 UI Delegate 以及 Renderer都值得详细解释。 Swing 的树状组件结构(虽然这是用户界面工具通有的特征)也值得详 细解释,因为这是完成某些复杂 Swing 组件,尤其像 JTable 、 JTree 、 JList 和 JComboBox 这 种
复杂组件中编辑功能得关键。此外, Swing / AWT 的事件模型如 Event Dispatching 和Propagation 和事件处理线程模型也需要详细解释,理解这部份是编写高效率 Swing 界面的
关键。
Component 在 Swing 的 MVC 模型中担任 Controller 的角色,同时它也是 Swing API 中
代表具体组件的对象。
Component 在 Swing 中对外负责提供 API 接口,对内负责协调控制 Model 和 UI Delega te(有时可能还包括 Renderer )的操作,可以说是整个 Swing 结构的中心角色。
总的来说自定义组件需要完成两样基本任务:第一侦听并处理低层事件,根据具体情况改 变
组件状态,如需要还要发出高级事件;第二,根据当前组件的状态画出当前组件的外观。
Swing 组件的 paint 方法是内部接口方法,一般用户不要直接调用这个方法,它总是在
事件调度线程中调用。一般说来除了系统刷新事件触发这个方法, Component 的 repaint 也
触发这个方法的调用。 repaint 方法常用于当组件状态发生变化时刷新界面使用。 repaint 方 法是 Swing 中少数几个线程安全的方法,可以在任何线程中调用它。它的原理是往事件队列中 post 一个 PAINT 事件。由于事件队列的事件是被事件调度线程同步执行的,所以这个方法总是线程安全的。
事件调度线程在应用程序事件处理函数 actionPerformed 没有完成之前是不能处理下一
个事件的,如果应用程序处理函数是一个时间复杂的任务 ( 比如查询数据库并将结果显示到表格中 ) ,后面包括 PAINT 事件将在长时间内得不到执行。
Swing components should be accessed on the Event Dispatch Thread only. Swing 组件只能 在
事件调度线程上访问。
其次,在为耗时任务启动的线程访问 Swing 组件时,要使用 SwingUt ilt ies. invokeLater
(因为swing组件的访问只能在EDT中!)或者 SwingUt ilit ies.invokeAndWait 来访问, invokeLater 和 invokeAndWait 的参数都是一个Runnable 对象,这个 Runnable 对象将被像普通事件处理函数一样在事件调度线程上执行。这两个函数的区别是, invokeLater 不阻塞当前任务线程, invokeAndWait 阻塞当前线程, 直到 Runnable 对象被执行返回
JDK1.6 以后, Swing 提供了一个专门的类 SwingWorker 能帮才继续。你解决这个编程范式,你
所需要做的就是继承这个类,重载 doInBackground ,然后在 actionPeformed 中调用它的
execute 方法,并通过 publish/process 方法来更新界面。
对于一般的耗时任务这样做是比较普遍的,但是有一些任务是一旦触发之后,会周期 性
的触发,如何做处理这种任务呢 ?JDK 中提供了两个 Timer 类帮你完成定时任务,一个是
javax.swing.Timer ,一个 java.util.Timer 。
对于周期性的线程执行操作,可以使用swing中的Timer来
您可能关注的文档
最近下载
- 风机基础工程质量评估报告范本.docx VIP
- 川教版(2024)《信息技术》四年级上册 第二单元 第4节《有趣好玩的编码》课件.pptx VIP
- 2025至2030数字标牌显示行业产业运行态势及投资规划深度研究报告.docx
- 高中政治必修一《中国特色社会主义》教材逻辑.docx VIP
- 平安集团基础性向测试全.docx
- 艾默生变频器的故障处理与维修指南.ppt VIP
- 川教版2024四年级上册信息技术第二单元第3节《大显神通的编码》课件.pptx VIP
- 矿业权评估师考试(矿业权评估实务与案例矿业权价值评估)题库及答案(2025年毕节).docx VIP
- 安全生产隐患识别图集 问题图片和整改图片对比 危险源识别(下).pptx VIP
- 2023年 AMC 12A真题含答案.pdf VIP
原创力文档


文档评论(0)