Функция Array List .remove не удаляет элемент полностью, оставляя пустые места в JTable - PullRequest
1 голос
/ 04 июня 2019

Я отображаю список массивов в JTable.У меня есть очень простой метод удаления:

@Override
public void DeleteContact(int id) {
    Database c = GetSingleContact(id);
    contactsList.remove(c);

Затем он сохраняется в файл.

Все работает правильно, но когда я удаляю один элемент, он оставляет пустое пространство, заполненное 0 в JTableЯ не могу избавиться от этого, методы расчета размера по-прежнему считают его элементом, а другие элементы не нумеруются (технически arraylist.remove (x) должен делать это автоматически).

1 Ответ

2 голосов
/ 05 июня 2019

(технически arraylist.remove (x) должен делать это автоматически).

Нет, не должно.

JTable использует TableModel для хранения данных.Любые изменения в данных должны быть сделаны в TableModel.Затем TableModel уведомит таблицу о перерисовке.

Если ArrayList используется в качестве хранилища данных для TableModel, то в методе deleteContact() необходимо вызвать:

 fireTableRowsDeleted( ...);

метод вашей пользовательской TableModel.

См. Модель таблицы строк для пошагового примера создания пользовательской TableModel для пользовательского объекта.

...