Java - 更改对象后更新JList

min*_*ino 7 java swing object jlist defaultlistmodel

我有一个使用DefaultListModel的JList.

然后我将值添加到模型中,然后出现在JList中.我创建了一个MouseListener(双击时)允许用户编辑他们选择的那个人的当前用户号.

我已经检查过该记录的实际对象正在被更改,它是.我遇到的唯一问题是让实际的Jlist更新以显示该对象的新值.

我当前代码的片段是:

创建JList和DefaultTableModel:

m = new DefaultListModel();
m.addListDataListener(this);
jl = new JList(m);
jl.addMouseListener(this);
Run Code Online (Sandbox Code Playgroud)

更新对象:

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

并且(当jl是JList而m是DefaultTableModel时):

public void contentsChanged(ListDataEvent arg0) {
        jl.setModel(m);
    }
Run Code Online (Sandbox Code Playgroud)

tra*_*god 12

相反的setModel(),使用的一个更新现有模型DefaultListModel的方法,例如setElementAt(),将fireContentsChanged()适合你.


Jas*_*n S 3

您需要调用fireContentsChanged()ListModel。