我不明白幕后到底发生了什么。
如果我有如下所示的main方法,是否表示我有2个线程? 一个主线程和一个线程来处理诸如paintComponent或listeners等事件? 如果是这样,那么在主线程中到底发生了什么?
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Ampelsteuerung frame = new Ampelsteuerung();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}`
我删除了EventQueue并对其进行了测试,没有发现任何区别。
答案 0 :(得分:0)
如果您阅读了SwingUtilities.invokeLater()的说明,那么您将会了解原因。一切都与AWT事件和GUI线程之间的同步有关
这将在处理所有未决的AWT事件之后发生。 当应用程序线程需要更新时,应使用此方法 GUI。...如果从事件分配线程(例如,从JButton的ActionListener)调用invokeLater,则doRun.run()仍将延迟,直到处理完所有未决事件为止
因此,如您的情况那样,如果不存在任何未决事件,似乎“什么也不会发生”。