我想将JScrollPane中的JList绑定到数组,每当数组更改时,列表都会更改。
当然,第一个想法是使用 JList
的构造函数之一,并希望JList
组件与数组同步更新:
public JList(Object[] listData);
public JList(Vector<?> listData);
显然,这是行不通的。仅当使用第三个非默认构造函数时
public JList(ListModel model);
并使用默认的实现DefaultListModel
并直接更新其元素,例如
DefaultListModel model = new DefaultListModel();
...
model.setElementAt(value, 25);
通过更新DefaultListModel
,您将收到动态更新的JList
组件。
是通过java.util.Arrays.asList(T... a)
方法提供的"备份指定数组的固定大小列表",比较 Java SE API。
但是,这里对Java SE的支持中断了。没有"由列表备份"的ListModel
实现。
我已经尝试了两种方法来克服这个问题:
- 在类中实现
List
接口同步更新基础DefaultListModel
- 扩展
DefaultListModel
,同步更新底层List
实例。
这两种方法都没有奏效。
因此,我冒昧地说Java SE还不支持此功能。您必须编写自己的JList
由List
实例同步的实现,或者等到新的 Java 发行版出现,该发行版具有由List
实例备份JList's
或DefaultListModel's
。