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