`
deepnighttwo
  • 浏览: 52283 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

swing编程的一些需要注意的事情

 
阅读更多

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高级特性》

分享到:
评论

相关推荐

    JavaSwing.PPT (Swing 详解)

    6. **Swing编程注意事项** - Swing组件与AWT组件可以混用,但可能会导致显示问题,一般建议避免。 - 轻量级组件与重量级组件的区别在于资源消耗,轻量级组件更适合大量使用。 在Swing编程中,开发者可以通过这些...

    java swing人事管理系统myeclipse开发SQLServer数据库CS结构java编程

    java swing人事管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用B/S模式开发。 应用技术:java+SQLSERVER 开发工具:Myeclipse、jdk。 二...

    AWT与Swing使用区别

    8. **编程注意事项** - **线程操作**:对Swing组件的线程操作需要特别注意,避免在非EDT中直接修改组件状态,应使用`SwingUtilities.invokeLater()`或`invokeAndWait()`来确保操作在EDT中执行。 - **顶级容器**:...

    swing进销存管理系统myeclipse开发SQLSERVER2008数据库CS结构java编程

    java swing 进销存管理系统 是一套完善的swing设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用B/S模式开发。 应用技术:java+SQLSERVER 开发工具:Myeclipse、jdk。...

    myeclipse swing 插件 天涯浪子

    后者"swing"可能是一个示例项目或库,用于演示Swing组件的使用,开发者可以通过这个项目学习Swing编程的基本技巧。 总的来说,"myeclipse swing 插件 天涯浪子"这个主题涵盖了MyEclipse集成开发环境,特别是其Swing...

    java swing电商出入库管理系统eclipse开发Mysql数据库CS结构java编程源码

    java swing 电商出入库管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:eclipse、jdk。 二...

    Manning Swing 2nd(英文版)

    - **对Swing感兴趣的任何人**:如果你对Swing感兴趣或者想要学习更多关于Java GUI编程的知识,那么这本书绝对值得一读。 综上所述,《Manning Swing》第二版是一本涵盖了Swing各个方面内容的经典书籍,无论你是初学...

    swing多窗口联动的实现示例

    6. **注意事项**: - 考虑到线程安全,如果多窗口操作涉及到线程,应确保在适当的同步控制下进行,防止数据竞争。 - 避免不必要的全局变量,以保持代码的整洁和可维护性。 - 使用模型-视图-控制器(MVC)设计模式...

    1940java swing零售库存管理系统myeclipse开发Mysql数据库CS结构java编程源码

    java swing 零售库存管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:Myeclipse8.5、jdk。...

    深入学习:jfc swing—java 基础类组件集.rar

    本书全面、深入地介绍了Java基础类中Swing的使用方法、技巧和编程注意事项。在介绍过程中,每节讨论一个主题,举出程序代码,并随后说明编程思路和技巧c最后的附录江总了Swing的包。类、接口和构造函数,各个类和...

    java图形编程:Action接口(Swing新增功能)专题借鉴.pdf

    Java 图形编程:Action 接口(Swing 新增功能)专题借鉴 Action 接口是 Java 中的 Swing 库中的一个重要组件,该接口继承自 ActionListener 接口,提供了统一的方式来处理按钮、菜单项和工具条上的按钮的事件。下面...

    设置图片适合swing组件

    4. **自适应图片显示的注意事项**: - **性能考虑**:频繁调用`getScaledInstance`可能会对性能产生一定影响,特别是在大量图片需要实时调整的情况下。 - **质量与效率平衡**:选择合适的`hints`参数可以在质量和...

    基于Java Swing 的带有文件上传和下载的聊天室

    `README.txt`通常包含项目的简要说明、使用指南或注意事项。`lib`文件夹可能包含项目运行所需的外部库或框架,这些库可能用于网络通信、文件操作或者其他特定功能。 总结来说,这个项目展示了如何结合Java Swing、...

    java Swing 中调用摄像头拍照源码(有说明)

    在Java编程环境中,Swing库提供了丰富的组件和功能来构建桌面应用程序。其中一个有趣的应用场景是利用Swing调用系统的摄像头进行拍照。以下是对标题“java Swing 中调用摄像头拍照源码(有说明)”和描述的详细解释...

    基于swing的多线程聊天室

    六、实际开发中的注意事项 1. UI设计:遵循用户友好原则,使界面清晰易用。 2. 测试:进行各种测试,包括单元测试、集成测试和性能测试,确保程序的稳定性和可靠性。 3. 文档:编写详细的用户手册和技术文档,方便...

    java swing个人财务收支管理系统eclipse开发Mysql数据库CS结构java编程源码

    java swing 个人财务收支管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:eclipse、jdk。 ...

    (源码+视频+文档+ppt) swing超级玛丽游戏.zip

    【文档和PPT】:文档和PPT通常会涵盖理论知识、步骤指南、注意事项和常见问题解答。它们为学习者提供了一个结构化的学习路径,帮助他们系统地掌握Java Swing游戏开发的基础和技巧。 总的来说,这个资源包是一个很好...

    Java Swing 2nd Edition

    Java Swing是一种用于Java编程语言的GUI(图形用户界面)工具包,它允许开发者创建图形化的桌面应用程序。Swing是Java的一部分,广泛用于开发跨平台的应用程序,因为Java的“一次编写,到处运行”的特性使得基于...

    Swing 与正则表达式

    #### 使用正则表达式的注意事项 - **性能问题**: 在处理大量数据时,正则表达式可能会导致性能瓶颈,特别是对于复杂的匹配模式。 - **安全性考虑**: 当正则表达式应用于用户输入的数据时,需要确保它们不会被恶意...

    java swing毕业设计题目管理系统eclipse开发Mysql数据库CS结构java编程源码

    java swing毕业设计题目管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:java+mysql 开发工具:eclipse、jdk。 ...

Global site tag (gtag.js) - Google Analytics