在Oracle站點閱讀last paragraph。擺動:這是安全的,不使用EDT來創建GUI?
爲什麼初始線程不是簡單地創建GUI本身?因爲 幾乎所有創建或與Swing組件交互的代碼都必須在事件分派線程上運行 。
因此main()
不應該在初始線程中創建Swing JFrame,但應至少使用SwingUtilities.invokeLater()
,直到Java 7。這也在this Q/A中解釋過)。
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
雖然這是很合乎邏輯的,我們必須指出,這是近教程從未做。 我在其他地方看過,現代編譯器會自己插入invokeLater()
而不告訴程序員。這是真的,例如使用Eclipse時的例子?
有沒有一些參考來證實這種行爲?是否有不同的情況需要考慮?
不,它是* GUI構建工具*,它會生成這樣的代碼。編譯器不敢:它會使它不符合JLS。 – 2014-09-21 13:23:25
這是Oracle推薦的,但通常在主線程啓動GUI時不會遇到任何問題。這只是確保你在右側的力量;) – 2014-09-21 13:46:49
@SergiyMedvynskyy:沒有_apparent_問題,建議[這裏](http://stackoverflow.com/a/7158505/230513)。 – trashgod 2014-09-21 15:47:46