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
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.
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(); }
}