所以我正在研究一个介绍级Java类的程序,并且在使用Vector将数据动态显示到GUI时遇到了问题。我们将数据存储在链表中,并使用向量来显示动态列表,显示GUI侧面的数据成员。我们可以很好地添加和删除链表中的数据,当我们添加它时,矢量会自动更新(我们在每次成功添加和删除结束时都会调用它)。但是,当我们从链表中成功删除数据成员时,数据将保留在显示向量的Jlist上。我们需要使用vector,不能使用通用的ArrayList。
任何帮助将不胜感激。
答案 0 :(得分:0)
假设JList
由Vector
支持(通过使用JList(Vector<?> listData)
构造函数),JList会将值从向量中复制一次,而不再读取它。这意味着对矢量的更改不会反映在JList中。
要让您的JList动态更新,您需要使用ListModel。常见的方法是使用DefaultListModel创建JList,然后相应地更新DefaultListModel。 DefaultListModel将在您修改时触发相应的ListDataEvents。
DefaultListModel listModel = new DefaultListModel();
JList jlist = new JList(listModel);
// to update
listModel.addElement("foo");
listModel.addElement("bar");