开发者

Java JList model

How can I make a lis开发者_开发百科t model from a JList in order to be able to insert an item into it. I want to use this method: addElement(java.lang.Object item)

I found an explanation here, but the problem is that ListModel is an interface and even if I write an implementation and override its method, I can't use the addElement() method


Java provides implementations of ListModel already, like DefaultListModel, that you can instantiate and use

For example:

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

final JList list = new JList(model);


Just an alternative method, if someone requires to use a custom ListModel. Inside the class that implements the list model interface, it would be necessary to create a structure to actually hold the elements like a LinkedList, like this:

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜