2014-06-21 103 views
1

假設我們有一個名爲JList1的列表。爲什麼需要ListModel對象?

我們要創建一個模型,所以當然,我們使用ListModel的對象。這是會做的。

DefaultListModel<Integer> numbers = new DefaultListModel<>(); 
numbers.addElement(1); 
numbers.addElement(2); 
numbers.addElement(3); 

jList2.setModel(numbers); 

我的問題是爲什麼我們使用List Model對象而不是普通列表或集合。我知道的唯一原因是setModel()只接受列表模型作爲它的參數,所以這些決定的原因是什麼?

回答

2

如果你看看DefaultListModel的JavaDoc,那麼你會意識到它提供了幾種方法來操縱JList中的項目,這是使用簡單集合無法實現的。

如果初始化列表以一個數組或向量,構造隱式創建的默認列表模式。默認列表模型是不可變的 - 您不能添加,刪除或替換列表中的項目。要創建可以單獨更改項目的列表,請將列表模型設置爲可變列表模型類的實例,例如DefaultListModel的實例。

請查看Swing教程關於How to Use Lists的詳細說明。

+1

很好的解釋,謝謝。 – user3758041

+0

非常歡迎。 – Braj

2

我的問題是爲什麼我們使用列表模型對象而不是普通列表或集合。

Swing遵循MVC(模型 - 視圖 - 控制器)設計的變體。

模型有一對夫婦的主要職責是:

  1. 來保存數據
  2. 通知視圖當數據變化,使視圖可以重繪自己。

在內部,您通常會發現Model將使用Collection實現來存儲數據。

您可以在網上搜索有關MVC設計的更多信息。您可能需要從以下位置開始:A Swing Architecture Overview以瞭解如何在Swing中使用MVC。

+0

感謝您的寶貴信息。 – user3758041

相關問題