這基本上是一個建築問題。Swing中的複合圖案
我想實現composite pattern處理Swing組件;也就是說,我想將幾個組件與其監聽器和邏輯組合在一個單一組件中,以便於處理。
考慮一個簡單的目錄瀏覽器;比如說,JScrollPane中的一個JTree,其中一些邏輯處理用戶擴展JTree節點時填充文件名。你將如何實現?
擴展JScrollPane並在構造函數中添加JTree等,然後您的應用程序處理JScrollPaneExtended類嗎?或者你是擴展JPanel還是JComponent?或者,當您填充JFrame時,您是否使用所調用的方法將所有這些類拼接在一起?或者是其他東西?爲什麼?
我基本上在尋找關於別人使用的粗略指導原則;我顯然希望處理某種形式的JComponent,以便在構建GUI時更輕鬆地進行處理,但是不管怎樣,它不適合擴展最頂層的組件(本例中爲JScrollPane),只是爲了讓某處放置膠合代碼。
如果你不擴展JComponent,你擴展(或不擴展)是什麼?如果不是JComponent,如何將組件放在GUI中? – Domchi 2010-10-14 22:10:40
@Domchi:我的「組件」只是至少一個具體的「JComponent」實例的花哨包裝。基類定義了'JComponent getWidget()'(實際上我用''將其泛化),並且佈局管理器和其他所有工作都是一樣的。 –
2010-10-15 01:50:38