Я создал класс ComboBoxModel, который расширяет AbstractListModel. Я могу добавить элемент в выпадающем списке, но когда я пытаюсь удалить, я получаю исключениеComboBoxModel - removeItem метод для исключения fireIntervalRemoved throws
Исключение в потоке «АВТ-EventQueue-0» java.lang.IllegalArgumentException: нулевой источник
на линии
this.fireIntervalRemoved (selectedItem, itemIndex, itemIndex);
public class TComboBoxModel extends AbstractListModel implements ComboBoxModel {
private int itemIndex;
private Object selectedItem = null;
private ArrayList<Object> itemList;
public TComboBoxModel() {
itemList = new ArrayList<>();
}
public void addItem(String item) {
this.itemList.add(item);
this.fireIntervalAdded(item, itemIndex, itemIndex);
}
public void removeItem() {
if (itemIndex >= 0 && itemIndex < getSize()) {
this.itemList.remove(itemIndex);
this.fireIntervalRemoved(selectedItem, itemIndex, itemIndex);
}
}
@Override
public void setSelectedItem(Object anObject) {
if ((selectedItem != null && !selectedItem.equals(anObject)) || selectedItem == null && anObject != null) {
this.selectedItem = anObject;
this.fireContentsChanged(anObject, -1, -1);
}
}
@Override
public Object getSelectedItem() {
return selectedItem;
}
@Override
public int getSize() {
return itemList.size();
}
@Override
public Object getElementAt(int index) {
return itemList.get(index).toString();
}
public int getItemIndex() {
return itemIndex;
}
public void increaseItemIndex() {
itemIndex++;
}
public void decreaseItemIndex() {
itemIndex--;
}
}
Трассировка стека кажется довольно прямо вперед, я предложил бы использовать 'DefaultComboBoxModel', хотя из-за его простота. Похоже, вы ничего не делаете * special * с вашей моделью, которую 'DefaultComboBoxModel' еще не делает, поэтому на самом деле нет смысла изобретать колесо. –