我有一个 JList
连接到一个集合。
当集合发生变化时,我需要 JList
自动刷新。但是我可以看到,只有在我最小化(或最大化)JFrame
之后,我的 JList
才会刷新。
为什么?
我是 Java 的新手,我正在努力学习。
我有列表模型的这个集合:
public class UserCollection extends Vector<User> implements ListModel{
private static final long serialVersionUID = 2668410577023194442L;
@Override
public void addListDataListener(ListDataListener arg0) {
System.out.println("add list! --- " +arg0.toString());
}
@Override
public Object getElementAt(int index) {
return this.get(index).getName();
}
@Override
public int getSize() {
return(this.elementCount);
}
@Override
public void removeListDataListener(ListDataListener arg0) {}
}
在另一个类中,我使用 userList.add(u1);
或 userList.remove(u1);
在 JFrame
类中我有:
JList list = new JList();
list.setModel(xmppManager.userList);
我可以在控制台上看到集合发生变化,如果我最小化 JFrame
和/或最大化,JList
会正确刷新...
最佳答案
如果可以,我建议您使用 DefaultListModel 作为 JList 的模型。该模型将在模型更改时自动更改 View (JList),并使您的生活更加轻松。如果您绝对必须使用自己创建的集合,那么看看您是否可以让包含它的类扩展一个 AbstractListModel。如果这样做,请务必在每次更改模型中的数据时调用适当的 fireXXXX() 方法。
关于Java JList 仅在最小化或最大化后刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973945/