4

如何从 a 制作列表模型JList以便能够将项目插入其中。我想使用这种方法:addElement(java.lang.Object item)

我在这里找到了解释,但问题是这ListModel是一个接口,即使我编写了一个实现并覆盖了它的方法,我也无法使用该addElement()方法

4

2 回答 2

11

JavaListModel已经提供了类似的实现DefaultListModel,您可以实例化和使用

例如:

final DefaultListModel model = new DefaultListModel();
model.addElement("one");
model.addElement("two");
model.addElement("three");

final JList list = new JList(model);
于 2010-05-23T19:19:19.147 回答
1

只是一种替代方法,如果有人需要使用自定义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.

于 2020-11-13T22:11:42.920 回答