`

Swing event-dispatch model

    博客分类:
  • Java
阅读更多

 First, when the user interacts with Swing components, whether it is clicking on a button or resizing a window, the Swing toolkit generates event objects that contain relevant event information, such as event source and event ID. The event objects are then placed onto a single event queue ordered by their entry time. While that happens, a separate thread, called the event-dispatch thread, regularly checks the event queue's state. As long as the event queue is not empty, the event-dispatch thread takes event objects from the queue one by one and sends them to the interested parties. Finally, the interested parties react to the event notification by processing logic such as event handling or component painting. Figure 1 illustrates how this works.



 Figure 1. Swing event-dispatch model

Since the event-dispatch thread executes all event-processing logic sequentially, it avoids undesirable situations such as painting a component whose model state is partially updated. This is great news for Swing developers because they can assume that only one thread, the event-dispatch thread, will process the event-handling code. If two event-dispatch threads worked on the event queue, Swing developers would need to write additional code for thread safety. Similarly, executing user interface-related code in any thread other than the event-dispatch thread can lead to unexpected behaviors.

  • 大小: 27.9 KB
分享到:
评论

相关推荐

    swing-address管理系统源码

    以及可能使用了Swing的事件调度线程(Event Dispatch Thread, EDT)来保证所有UI更新都在同一线程中进行,避免界面操作的不一致性。 总之,“Swing-address管理系统源码”是一个使用Java Swing开发的桌面应用,旨在...

    swing-Java游戏.zip

    Java提供了Thread类和Runnable接口来处理并发,Swing还有专用的Event Dispatch Thread(EDT)来确保UI操作的同步性。 6. **图形和动画(Graphics and Animation)**:Swing允许开发者使用Graphics类绘制自定义图形...

    90个java-swing基础例子.zip

    10. **线程管理**:Swing不是线程安全的,所有对Swing组件的修改应在Event Dispatch Thread (EDT)中进行,以避免并发问题。 通过这90个基础例子,你可以逐步了解和掌握如何使用Swing创建组件,布局组件,处理用户...

    精通Java Swing程序设计(中文CHM)

    - AWT/Swing组件不是线程安全的,所有的GUI更新应在Event Dispatch Thread(EDT)中进行,以避免线程冲突。 通过学习和实践“精通Java Swing程序设计”中的实例,读者可以深入了解Swing的用法,掌握如何创建功能...

    swing框架详细讲解

    Swing使用Event Dispatch Thread(EDT)来处理所有的用户界面更新,确保界面操作的线程安全。事件处理函数,如actionPerformed,必须在EDT上运行。当需要更新界面或响应用户交互时,可以使用repaint方法来触发组件的...

    简单swing电话本

    - Swing组件不是线程安全的,因此所有与UI相关的操作必须在Event Dispatch Thread (EDT)上执行,以避免出现界面不一致的问题。`SwingUtilities.invokeLater()` 或 `invokeAndWait()` 可用于确保操作在EDT上执行。 ...

    完整版的java swing 教务系统

    Swing应用可能需要考虑性能优化,例如通过使用事件队列(Event Dispatch Thread,EDT)来确保UI更新的同步性,以及避免阻塞主线程。 9. **国际化支持** 对于大型教务系统,支持多语言可能是一个需求。Swing提供了...

    swing代码,自己测试用

    9. **线程管理**:Swing是线程安全的,所有与UI相关的更新都应在Event Dispatch Thread(EDT)中进行,以防止出现线程冲突。 10. **拖放功能**:Swing支持拖放操作,允许用户通过拖动组件或数据在应用程序中交互。 ...

    Java_Swing_with_Samples.pdf

    Swing组件必须在事件分派线程(Event Dispatch Thread, EDT)中更新UI,以确保UI响应性和一致性。 **示例**:使用`SwingUtilities.invokeLater`方法来确保代码在EDT中执行: ```java SwingUtilities.invokeLater(new ...

    Java 2 图形设计卷Ⅱ(Swing)

    - 异步UI:Swing基于Event Dispatch Thread (EDT),确保了GUI更新的线程安全。 3. 布局管理器: - FlowLayout:按照从左到右,然后从上到下的顺序排列组件。 - BorderLayout:分为北、南、东、西、中五个区域,...

    java swing

    一个Swing应用通常从main方法开始,通过Event Dispatch Thread (EDT) 来处理所有的用户界面更新。Swing的启动方法JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)用于控制程序的退出。 总结,Java Swing为...

    第7章 GUI编程之Swing+ppt+pdf资料+例子

    由于Swing组件是线程安全的,因此所有UI更新必须在事件调度线程(Event Dispatch Thread, EDT)上执行。SwingWorker是异步执行任务并在EDT上更新UI的工具,避免了阻塞UI的问题。 11. Internationalization Swing...

    swing 入门资料

    10. **线程处理**: Swing 为GUI操作设计为单线程模型,即Event Dispatch Thread (EDT)。开发者需要注意,所有对UI的操作必须在EDT中执行,以避免线程安全问题。 在“javaupload”这个压缩包文件中,可能包含了Swing...

    图书管理系统(JavaSwing)

    - **事件调度线程**: Swing是单线程的,所有界面更新必须在Event Dispatch Thread (EDT)中进行,以避免界面卡顿。 - **SwingWorker**: 当需要执行耗时操作(如数据库查询)时,可以使用SwingWorker在后台线程中...

    基于swing的多线程聊天室

    3. Event Dispatch Thread(事件分发线程):Swing是单线程的,所有对组件的操作必须在EDT上进行,以确保界面的同步更新。 二、多线程技术 1. 用户界面线程:主GUI运行在EDT上,负责处理用户输入和显示UI更新。 2. ...

    精通Java Swing程序设计

    Swing支持MVC(Model-View-Controller)设计模式,这是软件工程中的一种经典架构。在Swing中,模型负责管理数据,视图负责展示数据,控制器处理用户交互。通过这种方式,Swing组件能够保持松耦合,易于维护和扩展。 ...

    Swing 天气预报

    这个应用采用了Model-View-Controller(MVC)设计模式,这是一种软件设计架构,用于分离应用程序的数据、表现和控制逻辑。 在MVC模式中: 1. **Model**(模型):负责管理应用程序的核心数据和业务逻辑。在天气预报...

    java精通swing程序设计

    8. **线程管理**:Swing组件的更新必须在事件分发线程(EDT,Event Dispatch Thread)上进行,理解Swing的并发规则是关键。 9. **拖放功能**:Swing支持拖放操作,可以方便地在组件间移动数据。 10. **Swing实用...

    Swing 线程之SwingUtilities invokeLater docx

    Swing 是基于 MVC 模式(Model-View-Controller)设计的,它提供了一个强大的 GUI 组件库,用于构建图形用户界面。 在 Swing 中,线程安全是一个非常重要的问题。Swing 组件是线程不安全的,这意味着只能从事件派发...

    深入学习:JFC SWING—JAVA 基础类组件集

    9. **线程管理**:Swing 是线程不安全的,所有的UI更新应在Event Dispatch Thread(EDT)上进行,以避免线程冲突。可以使用 SwingUtilities.invokeLater 或 invokeAndWait 方法确保代码在正确的线程中执行。 10. **...

Global site tag (gtag.js) - Google Analytics