Ryz*_*off 1 java swing arraylist jlist
我正在尝试将ArrayList添加到Jlist,但我理解的唯一方法是编写如下代码:
ArrayList<String> labels = new ArrayList<String>();
JList jlist = new JList(labels.toArray());
Run Code Online (Sandbox Code Playgroud)
令我困惑的是,为什么我不能像这样直接将ArrayList添加到Jlist:
ArrayList<String> labels = new ArrayList<String>();
JList jlist = new JList(labels);
Run Code Online (Sandbox Code Playgroud)
提前致谢.
包含"辅助"构造函数意味着使用JList简单的数据结构更容易.
的JList(和许多Swing组件)实际上是指与提供实际数据视图模型中使用.
原始设计在Swing被合并到主库(JDK 1.3之前)之前以及在引入集合API之前就已经过时了,因此原始开发人员可能无法List使用它们(因此包含在内Vector).
很可能没有人认为更新库是因为(部分原因是可能已经确定原始构造函数不应该被包括在内,但我没有参加那次会议;))
更好/更简单的解决方案是创建使用List其数据源的自己的模型.
例如...
public class MyListModel<T> extends AbstractListModel<T> {
private List<T> people;
public MyListModel(List<T> people) {
this.people = people;
}
@Override
public int getSize() {
return people.size();
}
@Override
public T getElementAt(int index) {
return people.get(index);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地将它提供给JList你需要的时间......
JList myList = new JList(new MyListModel<MyObject>(listOfMyObjets));
Run Code Online (Sandbox Code Playgroud)