我们假设我们有一个名为JList1的列表。
我们想为它创建一个模型,当然,我们使用ListModel对象。这就是将要做的事情。
DefaultListModel<Integer> numbers = new DefaultListModel<>();
numbers.addElement(1);
numbers.addElement(2);
numbers.addElement(3);
jList2.setModel(numbers);
我的问题是为什么我们使用List Model对象而不是普通的列表或集合。我所知道的唯一原因是setModel()
只接受列表模型作为其参数,那么这些决策的原因是什么?
答案 0 :(得分:2)
如果你看一下DefaultListModel的JavaDoc,你会发现它提供了几种方法来操纵JList
中使用简单集合无法实现的项目。
如果使用数组或向量初始化列表,构造函数将隐式创建默认列表模型。默认列表模型是不可变的 - 您无法添加,删除或替换列表中的项目。要创建可以单独更改其项目的列表,请将列表的模型设置为可变列表模型类的实例,例如DefaultListModel的实例。
请查看How to Use Lists上的 Swing教程,详细说明。
答案 1 :(得分:2)
我的问题是为什么我们使用List Model对象而不是普通的列表或集合。
Swing遵循MVC(模型 - 视图 - 控制器)设计的变体。
该模型有几个主要职责:
在内部,您通常会发现Model将使用Collection实现来存储数据。
您可以在网上搜索有关MVC设计的更多信息。您可能希望从:A Swing Architecture Overview开始,以了解如何在Swing中使用MVC。