2013-03-16 60 views
1

我想設置一個類作爲Jpanel的模型,我已經爲Uni的一個介紹性編程類做過這個,但這是一個非常不雅的實現。我確定有一個很好的方法來設置這個,但我不知道/忘記了它。如何爲Jpanel設置模型?

我之前使用的方法是將模型類作爲參數傳遞給視圖類,然後使用模型來確定它是什麼類型的實例,然後將基於此數據的特定圖標加載到gui。這是非常低效的,因爲它總是必須檢查什麼對象在某個位置並重新加載所有內容。

我覺得這應該是相當直接的,但還沒有找到正確的答案。任何幫助,將不勝感激。

+3

'JPanel'沒有它自己的模式,而是從事物的聲音,你要定義自己的視圖和模型。這是設計和編程的一部分 – MadProgrammer 2013-03-16 21:12:21

回答

0

其實JPanel用作大多數情況下,「容器」,它沒有自己的Model界面,例如JTableJList

0

就像他們說的JPanel沒有模型。

但是,這裏有一些種子代碼可以用來嘗試和僞造它。

public abstract class GPanelModel { 
    abstract public void setWhatEver(); 
    abstract public void getWhatEver(); 
    abstract public void doWhatEver(); 
} 

public class GPanel<T extends GPanelModel> extends JPanel { 
    final T t; 
    public GPanel(final T model) { 
     t = model; 
    } 
    public T getModel() { 
     return t; 
    } 
} 
2

我想成立一​​個類作爲模型一個JPanel。

太棒了。每個GUI程序員都應該這樣做。

我以前使用的方法是我將基於該數據到傳遞模型類作爲參數到視圖類,然後使用該模型來確定它是什麼類型的實例中,然後加載特定的圖標GUI。

你有正確的想法。模型實例需要傳遞給GUI組件,以便他們可以訪問模型的一部分。

在您的具體情況下,模型應該包含獲取每個圖標的方法,GUI組件將調用適合該組件的get圖標模型方法。通常,如果您的JPanel具有文本和按鈕組件,則您的模型應該包含這些文本和按鈕組件的內容。如果你的JPanel有一個帶有自己的數據模型的組件,比如JTree,那麼你可以將DefaultTreeModel保存在模型類中。

如果需要,可以在GUI中爲每個JPanel創建一個模型類。一般來說,你構建你的GUI模型是合乎邏輯的。

下面是從我其他的答案中的一個真實的例子:Spirograph GUI