1

我有一个 JList,其中每个元素都包含一些特殊数据。所以我为 JList 实现了 AbstractListModel。

当列表中有一个或多个元素时,一切都很好。

但是,在以下场景中不起作用:

  • Jlist 已经用一些元素实例化了。
  • 我需要从列表中删除所有元素。
  • 我在模型中没有可访问的 JList 对象(组件),因此无法调用 repaint()。

我不能调用 AbstractListModel 的 fire***() 方法,因为它会抛出 OutOfIndexException。

有什么建议么?

4

1 回答 1

3

你说:

因为我正在调用 fireContentsChanged(this, 0,0)..它将在列表中查找不存在的第 0 个元素。我知道原因,但不知道解决方案。

fireContentsChanged(...)移除物品时不要打电话。fireIntervalRemoved(...)改为打电话。repaint()另外顺便说一句,在这种情况下你永远不必打电话。更改模型的状态,然后通过调用适当的fireXXX(...)方法通知模型的侦听器是应该做的一切。

于 2013-04-13T01:54:14.130 回答