с использованием Java версии 9 У меня есть тестовый код для удаления элемента из списка, созданного путем передачи ссылки DefaultListModel. Это то, что я делаю.
В списке отображаются все 8 элементов, ничего не удалено. код
philosophers = new DefaultListModel<String>();
philosophers.addElement( "A" );
philosophers.addElement( "B" );
philosophers.addElement( "C" );
philosophers.addElement( "D" );
philosophers.addElement( "E" );
philosophers.addElement( "F" );
philosophers.addElement( "G" );
philosophers.addElement( "H" );
philosophers.removeElement(1);
lista = new JList<String>( philosophers );




Если у вас возникнет проблема, нажмите JavaDocs ...
DefaultListModel#removeElement
public boolean removeElement(Object obj)Removes thefirst (lowest-indexed) occurrence of the argument from this list.
Parameters:
obj - the component to be removed
Интересный момент здесь заключается в том, что параметр - это Object, а не индекс. Это означает, что с помощью автоматической упаковки Java вы фактически пытаетесь удалить Integer(1), которого нет в модели.
Вместо этого, если бы вы сделали что-то вроде philosophers.removeElement("B");, возможно, вам повезло больше.
Однако, если мы прочитаем немного больше в JavaDocs, мы найдем
public E remove(int index)Removes the element at thespecified position in this list. Returns the element that was removed from the list.
Throws an ArrayIndexOutOfBoundsException if the index is out of range (index < 0 || index >= size()).Parameters:
index - the index of the element to removed
Ах, это больше похоже на то, что тебе нужно