如何从JList
创建列表模型,以便能够将项目插入其中。
我想使用这种方法:addElement(java.lang.Object item)
我找到了解释here,但问题是ListModel
是一个接口
即使我编写实现并覆盖其方法,我也不能使用addElement()
方法
答案 0 :(得分:6)
Java提供ListModel
的实现,如DefaultListModel
,您可以实例化和使用
例如:
final DefaultListModel model = new DefaultListModel();
model.addElement("one");
model.addElement("two");
model.addElement("three");
final JList list = new JList(model);
答案 1 :(得分:4)
查看此Sun Tutorial。包含有关如何将列表添加到JList的示例
答案 2 :(得分:1)
如果有人需要使用自定义ListModel
,这只是一种替代方法。在实现列表模型接口的类内部,有必要创建一个结构来实际容纳诸如LinkedList
之类的元素,如下所示:
public class MyListModel implements ListModel{
private LinkedList data;
private LinkedList<ListDataListener> listeners;
public MyListModel() {
data = new LinkedList();
listeners = new LinkedList();
}
public void addElement(Object element){
data.add(element);
}
@Override
public int getSize() {
return data.size();
}
@Override
public Object getElementAt(int index) {
return data.get(index);
}
@Override
public void addListDataListener(ListDataListener l) {
listeners.add(l);
}
@Override
public void removeListDataListener(ListDataListener l) {
listeners.remove(l);
}
}
您还可以创建访问方法以执行与LinkedList
相关的任何操作,例如removeElement(Object element)
,或仅公开数据LinkedList
,或在必要时使用其他数据结构。当然,对于简单的实现,使用Java随附的模型将总是更加容易。