Java - Updating JList after changing an object

mino picture mino · Mar 26, 2012 · Viewed 18.3k times · Source

I have a JList which uses a DefaultListModel.

I then add values to the model which then appear in the JList. I have created a MouseListener which (when double clicked) allows the user to edit the current user number of that person they have selected.

I have checked that the actual object of that record is being changed, and it is. The only issue I'm having is getting the actual Jlist to update to show the new values of that object.

Snippets of the current code I have are:

Creating the JList and DefaultTableModel:

m = new DefaultListModel();
m.addListDataListener(this);
jl = new JList(m);
jl.addMouseListener(this);

Updating the object:

String sEditedNumber = JOptionPane.showInputDialog(this, "Edit number for " + name, number);
if (sEditedNumber != null) {
    directory.update (name, sEditedNumber);
}

And (when jl is the JList and m is the DefaultTableModel):

public void contentsChanged(ListDataEvent arg0) {
        jl.setModel(m);
    }

Answer

trashgod picture trashgod · Mar 26, 2012

Instead of setModel(), update your existing model using one of the DefaultListModel methods such as setElementAt(), which will fireContentsChanged() for you.