0

我试图了解这个线程的真正目的。我读过书籍、文章,但并不清楚 EventQueue 线程负责什么。我见过很多例子,有时用这个,有时不用。据我了解,该线程负责所有 GUI 操作,例如创建窗口、组件、从 OS API 调用本机函数和其他内容。因此,每次我更改 GUI 的某些部分时,我都应该将此操作传递给队列。所以使用队列应用程序默认有两个线程主线程和事件调度线程。所以我所有的业务逻辑都应该在主线程中执行(或从主线程创建新线程)和 EventQueue 中的所有 gui 操作(例如向表中添加新项目,更改标签更新列表中的文本)。此外,我应该在 EventQueue 中创建主窗口的实例(类扩展 jframe)吗?

我对吗 ?如果不是请解释。提前感谢大家。

4

2 回答 2

3

EventQueue管理单个 GUI 线程,因为它必须依赖主机平台的 GUI 资源,这些资源也是单线程的您可以在初始线程上运行非 GUI 代码,但您必须自己同步对任何共享数据的访问。SwingWorker在这里检查,是一个方便的选择。

于 2014-09-25T17:58:31.930 回答
1

听起来你已经掌握了要点,是的。如果您的应用程序本质上是“纯 GUI”,您可以在 EDT 上执行所有操作(事件调度线程,它是运行您传递给的任何内容的线程EventQueue.invokeLater),但是您必须在 EDT 上创建窗口,这意味着您的main()方法必须EventQueue.invokeLater至少使用一次。

因为 GUI 对象上的所有侦听器都将在 EDT 上收到通知,所以通常不需要EventQueue.invokeLater从处理程序中使用。

于 2014-09-25T16:41:48.573 回答