【问题标题】:Java Vector class not updatingJava Vector 类未更新
【发布时间】:2015-05-06 23:04:56
【问题描述】:

所以我正在开发一个介绍级别 Java 类的程序,并且在使用 Vector 将数据动态显示到 GUI 时遇到了问题。我们将数据存储在一个链表中,并使用向量在 GUI 一侧显示一个显示数据成员的动态列表。我们可以很好地从链表中添加和删除数据,并且当我们添加到它时,向量会自动更新(我们在每次成功添加和删除结束时都会调用来执行此操作)。但是,当我们成功地从链表中删除一个数据成员时,数据会保留在显示向量的 Jlist 上。我们必须使用vector,不能使用泛型的ArrayList。

任何帮助将不胜感激。

【问题讨论】:

  • 你是如何基于 Vector 创建 JList 的?
  • 只是好奇:是什么让您选择使用 Vector 类?
  • 遗憾的是,JList 接受的唯一Collection 是过时的Vector。但他/她无论如何都应该使用ListModel
  • 我们使用向量只是因为我们的教授告诉我们:/ 但是我们使用 JList 中的 setListData 方法将其设置为向量中的数据

标签: java vector jlist


【解决方案1】:

假设您的JListVector 支持(通过使用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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多