в моем проекте у меня есть несколько JComboBox с их пользовательскими моделями.В основном они используются для отображения значений некоторых столбцов JTables (поэтому я решил реализовать их для относительного класса, расширяющего AbstractTableModel).
public class MyTableModel1 extends AbstractTableModel{
protected class MyTableComboBoxModel1 extends AbstractListModel implements ComboBoxModel{
private Object selected;
@Override
public Object getElementAt(int index) {
return getValueAt(index, 1);
}
@Override
public int getSize() {
return getRowCount();
}
@Override
public Object getSelectedItem() {
return this.selected;
}
@Override
public void setSelectedItem(Object anItem) {
this.selected = anItem;
}
}
}
И у меня есть несколько моделей: MyTableModel2 с MyTableComboBoxModel2.Все эти модели выполняют одно и то же, за исключением некоторых дополнительных операций, не связанных ни с полем со списком, ни с самой таблицей.
Цель всего этого состоит в том, чтобы обновить отображаемые значения JComboBox в соответствии с изменениями, произошедшими относительноJTable.
Все отлично работает для моделей, которые я реализовал, за исключением одного случая, и после нескольких часов отладки я все еще не могу решить это.Код прослушиваемой модели практически идентичен остальным.Возможно, это ошибка где-то еще в моем коде, но я не могу понять, где.
Неправильный случай имеет следующее поведение: когда я изначально создал таблицу с некоторыми значениями, они правильно отображаются даже в JComboBox, но когда я добавляю новую строку, отображаемые значения становятся пустыми (размер отображаемого пустого меню правильный).Я обнаружил, что:
- правильно добавлена новая строка jtable.
- метод getElementAt вызывается несколько раз при нажатии на JComboBox и возвращает все доступные значения (включаяновые).
- метод getSize () вызывается, когда я щелкаю JComboBox и возвращаю правильное обновленное значение
- Если JComboBox имеет фокус, я могу использовать стрелки, чтобы выбрать доступные элементы и всеэлементы могут быть выбраны (даже добавленные).
- Если я использую щелчок мыши случайным образом в одной точке в отображаемом пустом меню, можно выбрать все последние доступные записи.
У кого-нибудь есть идеи?Не могли бы вы подсказать мне, как я могу отлаживать в такой ситуации?К сожалению, я не могу опубликовать SSCCE .. Я надеюсь, что кто-то может помочь в любом случае ..