Java 图形用户界面显示在EDT上
我读过这句话“图形用户界面显示在EDT上”。有人能解释一下这句话吗?我知道事件侦听器是在EDT上执行的,但是GUI是如何在EDT上显示的。语句“GUI显示在EDT上”是不精确的,具有误导性的。实际情况是,GUI对象上的所有操作,包括它们的实例化,都必须在EDT上进行。因此,所有导致GUI元素显示在屏幕上的操作也会发生在EDT上。EDT负责所有操作。它接受任何事件(鼠标/键盘单击等),然后根据事件调用任何操作。如果您希望在UI上执行任何操作(显示代码中的按钮等),EDT将再次负责在屏幕上显示Java 图形用户界面显示在EDT上,java,swing,awt,event-dispatch-thread,Java,Swing,Awt,Event Dispatch Thread,我读过这句话“图形用户界面显示在EDT上”。有人能解释一下这句话吗?我知道事件侦听器是在EDT上执行的,但是GUI是如何在EDT上显示的。语句“GUI显示在EDT上”是不精确的,具有误导性的。实际情况是,GUI对象上的所有操作,包括它们的实例化,都必须在EDT上进行。因此,所有导致GUI元素显示在屏幕上的操作也会发生在EDT上。EDT负责所有操作。它接受任何事件(鼠标/键盘单击等),然后根据事件调用任何操作。如果您希望在UI上执行任何操作(显示代码中的按钮等),EDT将再次负责在屏幕上显示 理想
理想情况下,所有的按钮初始化(UI操作等)都应该由EDT完成,尽管这不是强制性的(在android中是)。文档中说不要执行冗长的任务是为了:正如前面提到的,因为EDT处理所有事情,如果EDT忙于冗长的任务,那么任何鼠标点击等都无法通过EDT处理,从而在UI体验中创建挂起请参阅Oracle教程并通过单击标记EventDispatchThread阅读Q&A(添加到您的问题中)我读到了,文档中说,您不应该在EDT上执行冗长的任务,否则GUI可能会冻结。但事件应继续进入事件队列。
(但事件应继续进入事件队列。)
EDT在一瞬间将所有事件刷新到屏幕上,然后/after is EDT empty“我已阅读此语句“GUI显示在EDT上”。看起来有误导性,因为EDT不是决定GUI如何显示的人,而只是程序员必须用来操作GUI组件的线程(根据Java指南)。因此,问题应该是(?)“程序是否必须仅使用EDT创建/更新GUI组件?”。