swing是非线程安全的,也就是说,如果多个线程同时对一个swing组件进行操作,很可能会引发异常等问题,以至程序崩溃。毕竟,repaint是一个比较花费时间的操作,如果一个swing组件在repaint的过程中,其内容被更改,就会导致repaint的内容与修改后的内容不符,可能导致访问错误(比如多线程环境下修改一个List的item项)。
使用Swing的时候,有几个需要注意的地方。首先,当一个swing窗体被创建并现实的时候,会有一个叫做“事件分派线程”的线程被创建,所有的事件处理方法(repaint、actionPerformed等等)都是由这个线程负责执行的,也就是说,整个swing窗体(包含其中的组件)都是这个线程支撑的。
使用swing的几个规则:
1)如果遇到耗时的或者可能阻塞的事情要去做,就创建一个线程去处理它。比如,文件io、网络连接、大规模数据处理。不要放在事件分派线程中处理,以免导致swing界面不响应。
2)如果一个处理需要从swing ui中读取数据,则应该在此方法处理任何具体事情前,将所有数据从UI中读取完毕,然后再处理。
3)如果你需要等待一个固定的时间,使用Timer而不要让事件分派线程sleep();,因为这里一sleep,别的事件就没法处理了。
4)不要在别的线程中操作ui,应该设置相应参数,让事件分派线程操作ui,保证只有一个线程操作swing这个线程非安全的东西。(swing程序的单一线程规则)
还有几个为数不多的方法是线程安全的:
JTestComponent.setTest(); JTestArea.insert/append/replaceRange
可以在任意的线程中添加/删除事件监听器。JComponent的repaint和revalidate方法可以在任意线程中调用,repaint方法调度一个重绘事件,revalidate调度一个布局事件,肯定也会紧接着构件一个重绘事件。
参考资料:《java2核心技术 卷II高级特性》
分享到:
相关推荐
java swing人事管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用B/S模式开发。 应用技术:java+SQLSERVER 开发工具:Myeclipse、jdk。 二...
java swing 进销存管理系统 是一套完善的swing设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用B/S模式开发。 应用技术:java+SQLSERVER 开发工具:Myeclipse、jdk。...
java swing 电商出入库管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:eclipse、jdk。 二...
java swing 零售库存管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:Myeclipse8.5、jdk。...
本书全面、深入地介绍了Java基础类中Swing的使用方法、技巧和编程注意事项。在介绍过程中,每节讨论一个主题,举出程序代码,并随后说明编程思路和技巧c最后的附录江总了Swing的包。类、接口和构造函数,各个类和...
java swing 个人财务收支管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:eclipse、jdk。 ...
一、源码特点 1、这是一款java swing编写的打猎射击游戏,从这款游戏的编程中,我们可以练习如何进行射击对象的消失及相关按键的监听。 该游戏的一大亮点还是...三、注意事项 1.无需数据库即可运行 2.MyEclipse运行
java swing毕业设计题目管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:eclipse、jdk。 ...
本书全面、深入地介绍了Java基础类中Swing的使用方法、技巧和编程注意事项。在介绍过程中,每节讨论一个主题,举出程序代码,并随后说明编程思路和技巧c最后的附录江总了Swing的包。类、接口和构造函数,各个类和...
Java+Swing打猎射击游戏源码 源码描述: 一、源码特点 1、这是一款java swing编写的打猎射击游戏,从这款游戏的编程中,我们可以练习如何进行射击对象的消失...三、注意事项 1.无需数据库即可运行 2.MyEclipse运行
本书全面、深入地介绍了Java基础类中Swing的使用方法、技巧和编程注意事项。在介绍过程中,每节讨论一个主题,举出程序代码,并随后说明编程思路和技巧。最后的附录汇总了Swing的包、类、接口和构造函数,各个类和...
注意事项写得很清楚,按照注意事项里的做就能跑通。适合刚入门者学习socket及CS模式。
A.5.6 固有方法与程序片的注意事项 A.6 CORBA A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 ...
此处需要注意系统默认提供的线程池是如何配置的 扩展ThreadPoolExector GUI应用程序探讨 活跃度(Liveness)、性能、测试 避免活跃性危险 死锁 锁顺序死锁 资源死锁 动态的锁顺序死锁 ...
A.5.6 固有方法与程序片的注意事项 A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和 A.6.4 比较CORBA与 A.7 总结 附录B 对比C++和 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的...
1.详细讲述了JAVA环境变量的配置和说明 2.透彻的介绍了类,对象的概念 3.对JAVA的多态,继承,封装做了比较详细的介绍 ...9.使用JDBC,ODBC连接数据库,介绍了Connection,Statement ,ResultSet的使用方法和注意事项。
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
在第二章中,全面地讲解Java的基本语法知识,对基本语法的讲解也不是泛泛而谈,而是在其中贯穿各种实际应用中的巧妙用法和注意事项。在第三章和第四章中,透彻系统地讲解了面向对象的思想和应用。在以后的章节中,用...
自动售货机注意事项 应用 UIlabel“屏幕”代表将在自动售货机上显示的屏幕。 弹出对话框表示通过更改或产品的物理输出在自动售货机中发生的与用户的硬件交互。 自动贩卖机视图 处理视图,例如按钮和布局。 接收...
28 1.3 程序开发过程 29 1.4 编码规范 29 1.5 HelloWorld:第一个Java程序 30 1.5.1 编写程序代码 30 1.5.2 编译程序代码并运行 30 1.5.3 注意事项 31 1.6 使用Eclipse集成开发工具开发 32 1.7 综合练习 32 1.8 小结...