Попытка удалить Элемент из объекта DefaultListModel - PullRequest
0 голосов
/ 28 мая 2018

с использованием java версии 9 У меня есть некоторый тестовый код для удаления элемента из списка, созданного путем передачи ссылки на DefaultListModel.Это то, что я делаю.

  1. создайте объект DefaultListModel
  2. добавьте к нему 8 элементов (A..H), вызвав addElement
  3. , удалите элемент, вызвавremoveElement
  4. создать Jlist передать ссылку моей DefaultListModel на него
  5. В окне списка отображаются все 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 );      
    

1 Ответ

0 голосов
/ 28 мая 2018

Если у вас возникли проблемы, нажмите JavaDocs ...

DefaultListModel#removeElement

public boolean removeElement(Object obj)
Удаляет первое (с наименьшим индексом)) вхождение аргумента из этого списка.


Параметры:
obj - удаляемый компонент

Интересным моментом здесь является параметрObject, а не индекс.Это означает, что с помощью автоматического бокса Java вы фактически пытаетесь удалить Integer(1), которого нет в модели.

Вместо этого, если вы сделали что-то вроде philosophers.removeElement("B");

Однако, если мы прочитаем немного больше в JavaDocs, мы найдем

DefaultListModel#remove

public E remove(int index)
Удаляет элемент в указанной позиции вэтот списокВозвращает элемент, который был удален из списка.


Выдает исключение ArrayIndexOutOfBoundsException, если индекс выходит за пределы диапазона (index <0 || index> = size ()).

Параметры:
index - индекс удаляемого элемента

Ах, это больше похоже на то, что вы ищете

...