Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java - Updating JList after changing an object

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);
    }
like image 714
mino Avatar asked Mar 25 '12 23:03

mino


1 Answers

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

like image 155
trashgod Avatar answered Sep 29 '22 11:09

trashgod