Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove multiple items in JList

It's funny, I can't find out how to delete multiple selected items in a JList

Help please

enter image description here

UPD: OK, the problem was in NetBeans, because it creates JList and sets model AbstractListModel which somehow not working with remove method.

like image 682
VextoR Avatar asked Oct 06 '11 09:10

VextoR


2 Answers

   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]);
          } 
    } 
like image 167
VextoR Avatar answered Oct 07 '22 19:10

VextoR


I came across this problem too. All posted solutions did not work for me because if I call DefaultListModel#remove(int) it will modify the underlying list and thus the indices which I gathered before with JList#getSelectedIndices() are no longer valid.

I came to this solution, which worked for me.

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

By handling the selected Objects I don't have to care about indices and their validity.

like image 29
Chris Avatar answered Oct 07 '22 19:10

Chris