从模型中删除所有元素后更新JList(AbstractListModel)

时间:2013-04-13 01:47:33

标签: java swing jlist defaultlistmodel

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

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

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

你说:

  

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

删除项目时请勿致电fireContentsChanged(...)。请致电fireIntervalRemoved(...)。另外,在这种情况下,你永远不必打电话给repaint()。更改模型的状态,然后通过调用正确的fireXXX(...)方法通知模型的侦听器是应该做的。