【问题标题】:Remove all selected elements from JList?从 JList 中删除所有选定的元素?
【发布时间】:2019-07-06 16:03:58
【问题描述】:

我正在尝试从 JList 中删除选定的元素。我知道如何删除一个

((DefaultListModel) jList.getModel()).remove(index);

但是;有没有办法删除我选择的索引?我知道函数

list.getSelectedIndices();

返回一个 Int 数组。我想如果我遍历它以删除它应该工作的索引但是我从中得到错误(假设因为索引 # 正在下降。

【问题讨论】:

  • 尝试逆序迭代
  • 首先删除最大的索引。或者获取选定的(不是索引),然后调用docs.oracle.com/javase/8/docs/api/javax/swing/…
  • 如果要从正在迭代的列表中删除项目,可以使用迭代器
  • 你不能遍历一个列表并在迭代时删除它的项目,这很可能会给你一个并发修改异常,使用迭代器

标签: java swing jlist


【解决方案1】:

删除一个元素会“移动”它之后的所有元素,这可能是您所看到的错误的原因。解决此问题的一种方法是向后迭代这些索引,因此您永远不会处理列表的移位部分:

DefaultListModel model = (DefaultListModel) jList.getModel();
int[] indexes = jList.getSelectedIndexes();
for (int i = indexes.length; i >= 0; --i) {
    model.remove(indexes[i]);
}

【讨论】:

  • 由于某种原因,一次删除超过 1 个元素。
  • @DotSlashShell 里面有一个错误;我修好了它;再试一次。
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多