JList and ArrayList update

前端 未结 2 1503
粉色の甜心
粉色の甜心 2021-01-16 05:55

I would like to have example on how to update a JList when I add or remove elements from a ArrayList.

The ArrayList is part of Model class. The Model class is passe

相关标签:
2条回答
  • 2021-01-16 06:10

    You need to use a ListModel to control adding and removing items from a JList. The tutorial is very useful: http://download.oracle.com/javase/tutorial/uiswing/components/list.html

    Here is some example code from the tutorial:

    listModel = new DefaultListModel();
    listModel.addElement("Jane Doe");
    
    listModel.insertElementAt(employeeName.getText(), index);    
    
    int index = list.getSelectedIndex();
    listModel.remove(index);
    

    If you have an arraylist you could build your own List Model around it.

    0 讨论(0)
  • 2021-01-16 06:22

    If you create your own ListModel you should extend AbstractListModel and when implementing your addElement method, you need to call a fire-method (for notifying the user interface for the update), like:

    public void addElement(MyObject obj) {
        myArrayList.add(obj);
        fireIntervalAdded(this, myArrayList.size()-1, myArrayList.size()-1);
    }
    

    You custom ListModel should look something like this:

    public class MyListModel extends AbstractListModel {
    
        private final ArrayList<MyObject> myArrayList = new ArrayList<MyObject>();
    
        public void addElement(MyObject obj) {
            myArrayList.add(obj);
            fireIntervalAdded(this, myArrayList.size()-1, myArrayList.size()-1);
        }
    
        @Override
        public Object getElementAt(int index) { return myArrayList.get(index); }
    
        @Override
        public int getSize() { return myArrayList.size(); }
    }
    
    0 讨论(0)
提交回复
热议问题