我最近开始学习和探索Java GUI编程的基础。
经过一段时间的编程,我只完成了后端工作或其他工作,因此,我最接近用户界面的是命令控制台(令人尴尬的是,我知道)。
我正在使用Swing,据我所知,通过扩展,我也正在使用AWT。
我的问题基于以下代码:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frame.setVisible(true);
}
} );
我已经研究了一段时间,因为我想完全理解这段奇怪的代码,并且多次遇到“事件分派线程”一词。 如果我错了,请纠正我,但据我了解; 它与使用多个线程以及Java Swing如何解释这些线程有关。 我还收集到上面的代码用于在创建窗口之前确保所有线程都是“安全的”,因此invokeLater吗?
我读过:
“您只能从事件调度线程中调用在框架上运行的方法”
而且只有在某些情况下,您才能从main方法调用在框架上运行的方法。
有人可以告诉我事件调度线程到底是什么吗?
它与多个执行线程有何关系?如何从main方法调用这些线程不安全? 同样为什么我们需要这个invokeLater?
我们不仅可以像其他任何对象一样创建窗口吗?
由于我没有掌握这些关系和想法,因此在研究中遇到了一些障碍。
附带说明的是,我希望将自己的知识建立在深入理解的基础上,因为我相信这会带来最佳的总体结果,从而带来最佳的计划。 如果我深入了解某些东西是如何工作的,那么您可以有效地使用技巧和调整,而不仅仅是将它们重新编写为代码,因此请不要害怕给我一些额外的深入解释并扩大我的知识。
谢谢。