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不會凍結)。
添加回答
舉報