如何从 a 制作列表模型JList
以便能够将项目插入其中。我想使用这种方法:addElement(java.lang.Object item)
我在这里找到了解释,但问题是这ListModel
是一个接口,即使我编写了一个实现并覆盖了它的方法,我也无法使用该addElement()
方法
JavaListModel
已经提供了类似的实现DefaultListModel
,您可以实例化和使用
例如:
final DefaultListModel model = new DefaultListModel();
model.addElement("one");
model.addElement("two");
model.addElement("three");
final JList list = new JList(model);
只是一种替代方法,如果有人需要使用自定义ListModel
. 在实现列表模型接口的类中,有必要创建一个结构来实际保存元素,如 a 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);
}
}
You can also create access methods to do anything related to the LinkedList
, like removeElement(Object element)
, or just make the data LinkedList
public, or use different data structures if necessary. Of course, for a simple implementation it will always be easier to use the models provided with Java.