Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javajlist模型_Java_Swing_Jlist - Fatal编程技术网

javajlist模型

javajlist模型,java,swing,jlist,Java,Swing,Jlist,如何从JList创建列表模型,以便能够在其中插入项目。 我想使用这个方法:addElement(java.lang.Object项) 我找到了一个解释,但问题是ListModel是一个接口 即使我编写了一个实现并重写了它的方法,我也不能使用addElement()方法Java已经提供了ListModel的实现,就像您可以实例化和使用的那样 例如: final DefaultListModel model = new DefaultListModel(); model.addElement("on

如何从
JList
创建列表模型,以便能够在其中插入项目。 我想使用这个方法:
addElement(java.lang.Object项)

我找到了一个解释,但问题是
ListModel
是一个接口
即使我编写了一个实现并重写了它的方法,我也不能使用
addElement()
方法Java已经提供了
ListModel
的实现,就像您可以实例化和使用的那样

例如:

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

final JList list = new JList(model);

如果有人需要使用自定义的
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);
    }
    
}
公共类MyListModel实现ListModel{
私有链接列表数据;
私有链接列表侦听器;
公共MyListModel(){
数据=新的LinkedList();
侦听器=新的LinkedList();
}
public void addElement(对象元素){
数据。添加(元素);
}
@凌驾
公共int getSize(){
返回data.size();
}
@凌驾
公共对象getElementAt(int索引){
返回数据。获取(索引);
}
@凌驾
public void addListDataListener(ListDataListener l){
添加(l);
}
@凌驾
公共void removeListDataListener(ListDataListener l){
删除(l);
}
}

您还可以创建访问方法来执行与
LinkedList
相关的任何操作,如
removeElement(对象元素)
,或者只将数据
LinkedList
公开,或者在必要时使用不同的数据结构。当然,对于一个简单的实现来说,使用Java提供的模型总是比较容易的。

谢谢,我把最后一行改为list.setModel(model);这对我很有用,看看这个。包含如何向JList添加列表的示例