Вы должны понимать, что JTable - это представление данных, тогда как фактические данные находятся в TableModel .Если вам нужно очистить таблицу, то вам нужно очистить TableModel.
Если ваша TableModel является AbstractTableModel , вы должны предоставить реализации 3 методов:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
Зачастую фактические объекты данных хранятся в дополнительной структуре данных (например, в списке), а затем AbstractTableModel запрашивает этот список.
List<DomainObject> objects = new ArrayList<DomainObject>();
public int getRowCount() { return objects.size(); }
// How many columns you make depends on what features of the objects you're exposing.
public int getColumnCount() { return NUMBER_OF_COLUMNS; }
public Object getValueAt(int row, int column) {
DomainObject object = objects.get(row);
... // pull out the property based on the column they pass in
}
// By exposing this method, you can allow your Controller code to reach into this model
// and delete all the rows.
public void clear() {
objects.clear()
}
То, что предлагает вам HH, это изменить модельВаш JTable ссылается на пустую модель, которая в действительности очистит таблицу.Однако столбцы и т. Д. Не будут сохранены правильно (новый DefaultTableModel понятия не имеет, какими будут имена этих столбцов).
После того, как вы выяснили, как вид и модель больше соответствуют друг другу, взгляните на GlazedLists .Это дает очень мощный способ создания TableModels, которые обеспечивают динамическое представление ваших данных, например, путем фильтрации строк, которые не соответствуют определенным критериям.
Подводя итог - вы не найдете метода вJTable, чтобы очистить его содержимое, потому что это работа TableModel.Вам нужен какой-то способ убедиться, что структуры данных поддержки TableModel очищены.