我无法理解幕后发生了什么。
如果我有一个像下面这样的主要方法,是否意味着,我有2个线程?一个主线程和一个线程的事件,如paintComponent或听众等?如果是这样,主线程究竟发生了什么呢?
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并在没有测试的情况下,看不出任何差异。
如果您阅读了SwingUtilities.invokeLater()的描述,您就会明白原因。这都是关于AWT事件和GUI线程之间的同步
这将在处理完所有挂起的AWT事件后发生。当应用程序线程需要更新GUI时,应该使用此方法....如果从事件调度线程调用invokeLater - 例如,从JButton的ActionListener调用 - doRun.run()仍将延迟到所有已处理待处理事件
因此,如果在您的情况下不存在未决事件,则似乎“无”。