2014-06-21 70 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

相关问题