你的方法總體上聽起來不錯 - 只要它有效,你已經達到了主要目標!所以我在這裏的評論更多的是關於微調/更廣泛的設計方面。
在構造函數中執行GUI構造沒有什麼根本性的錯誤,它提供了,GUI在程序執行期間不會隨後發生變化。這裏的基本原理是施工人員應該留作「一次性」施工活動。所以對於有預定佈局的對話框和類似對象來說可能是好的。
如果你有一個更動態的GUI,在程序執行過程中經常添加和刪除組件,那麼我強烈建議將它移到構造函數外部的一組方法中,以便可以獨立於對象構造來調用它們。如果需要進行初始設置,構造函數本身仍然可以調用這些方法,但隨後您可以稍後調用這些方法來添加新組件,刷新佈局等。
好消息是,這個東西不是如果你弄錯了,很難重構 - 如果需要的話,將設置代碼從構造函數中拖出到單獨的方法通常是微不足道的。
要注意的另一件事是經常重複的口頭禪「寧願組合繼承」。也就是說,如果您可以通過組裝現有組件而不是繼承和覆蓋您的設計,從而使您的GUI工作起來,那麼從長遠來看,可能會更好/更容易維護。例如,我不認爲自己曾經使用JFrame子類 - 只是在它內部添加包含所有應用程序特定組件的JPanel幾乎總是很乾淨。
最後,請謹慎將您的GUI組件與您的應用程序邏輯緊密結合。 Swing實際上做的很好,可以讓你從演示代碼中分離出你的數據模型(例如使用ListModel and friends)。值得研究和理解這種方法。問題是,您應該通過通常以一種與應用程序無關的方式構建GUI組件,但通過將它們連接到正確的數據模型和事件處理程序等方式爲它們提供特定於應用程序的行爲。
謝謝隊友。我不太明白你剛纔所說的那麼多,因此研究很多。但總的來說,這似乎是合法的。 :) – yackyackyack