3 回答

TA贡献1871条经验 获得超8个赞
是否每次需要更新GUI组件时都必须使用?
actionPerformed

TA贡献1765条经验 获得超5个赞
Swing is single threaded and all changes to the GUI must be done on EDT
invokeLater()
主要方法应始终包装在 invokeLater()
将动作/事件延迟(但异步)到 EventQueue
,如果EDT不存在,则必须使用 invokeLater()
..你可以用 if (SwingUtilities.isEventDispatchThread()) {...
有存在 invokeAndWait()
,但直到今天,我(只是我的观点)还没有找到使用它的理由。 invokeAndWait()
而不是 invokeLater()
,除了对GUI的硬更改(JTree&JTable)之外,但仅用 物质L&F (非常适合测试EDT上事件的一致性) 基本材料: 在Swing中并发 所有来自后台任务的输出必须包装在 invokeLater()

TA贡献1810条经验 获得超4个赞
执行应用程序的主线程。 EDT(事件分派线程)是一个更新UI的线程(因此UI不会冻结)。
添加回答
举报