我很好奇为什么我们必须使用java.awt.EventQueue.invokeLater来控制swing组件。为什么我们不能在普通线程中这样做?幕后究竟发生了什么?从我注意到的情况来看,如果我有一个JFrame我可以从主线程将可见性设置为true或false而不会出现任何错误,而且它似乎确实有效。那么使用java.awt.EventQueue.invokeLater究竟能实现什么?我也完全清楚我可以使用SwingUtilities.invokeLater但作为explainedhere,它们似乎是一回事。感谢任何人的解释。希望这是一个有效的问题。编辑:回答wumpz问题我们可以创建一个
这个问题在这里已经有了答案:SwingUtilities.invokeLater()whyisitneeded?(7个回答)关闭7年前。SwingUtilities.invokeLater有什么作用?它只是延迟其run方法中的代码块的执行吗?在invokeLater函数中调用一个Action或在我们想要执行的线程结束时简单地调用它有什么区别?任何人都可以帮助我了解invokeLater函数的真正作用吗? 最佳答案 正如其他答案所说,它在AWT事件调度线程上执行您的Runnable。但是你为什么要这样做呢?因为Swing数据结构不是线
EventQueue.invokeLater()和SwingUtilities.invokeLater()有什么不同吗?或者是后者只是为了设计而建立在前者之上(没有修改)? 最佳答案 没有没有区别。SwingUtilities类被构建为将swing中使用的所有通用实用方法组合在一个类中。在内部SwingUtilities.invokeLater()调用EventQueue.invokeLater()1197publicstaticvoidinvokeLater(RunnabledoRun){1198EventQueue.invoke