如何删除JList中的多个项目

时间:2011-10-06 09:09:32

标签: java swing netbeans jlist

很有趣,我无法找到如何删除JList中的多个选定项目

请帮助

enter image description here

UPD: 好的,问题出在NetBeans中,因为它创建了JList并设置了模型AbstractListModel,它不知道如何使用remove方法。

5 个答案:

答案 0 :(得分:15)

   DefaultListModel dlm = (DefaultListModel) subjectList.getModel();

      if(this.subjectList.getSelectedIndices().length > 0) {
          int[] selectedIndices = subjectList.getSelectedIndices();
          for (int i = selectedIndices.length-1; i >=0; i--) {
              dlm.removeElementAt(selectedIndices[i]);
          } 
    } 

答案 1 :(得分:2)

我也遇到过这个问题。 所有发布的解决方案对我都不起作用,因为如果我调用DefaultListModel #remove(int)它将修改基础列表,因此我之前使用JList#getSelectedIndices()收集的索引不再有效。

我找到了这个对我有用的解决方案。

for (MyObject o : jList1.getSelectedValuesList())
{
    ((DefaultListModel<MyObject>)jList1.getModel()).removeElement(o);
}

通过处理选定的对象,我不必关心索引及其有效性。

答案 2 :(得分:1)

我的解决方案:

DefaultListModel dlm = (DefaultListModel) lst.getModel();
int count = lst.getSelectedIndices().length;

for (int i = 0; i < count; i++)
{
     dlm.removeElementAt(lst.getSelectedIndex());
}

答案 3 :(得分:0)

public int[] getSelectedIndices()

答案 4 :(得分:-1)

其中foo是JList:

int[] selected = foo.getSelectedIndices();
for(int i : selected){
  foo.remove(i);
}