Как очистить содержимое jTable?
У меня есть jTable, и он получил модель таблицы, определенную следующим образом:
javax.swing.table.TableModel dataModel =
new javax.swing.table.DefaultTableModel(data, columns);
tblCompounds.setModel(dataModel);
Кто-нибудь знает, как я могу очистить его содержимое? Просто он возвращается к пустой таблице?
Ответы
Ответ 1
Самый простой способ:
//private TableModel dataModel;
private DefaultTableModel dataModel;
void setModel() {
Vector data = makeData();
Vector columns = makeColumns();
dataModel = new DefaultTableModel(data, columns);
table.setModel(dataModel);
}
void reset() {
dataModel.setRowCount(0);
}
то есть. ваш метод reset сообщает модели, что у нее есть 0 строк данных. Модель будет запускать соответствующие события изменения данных в таблицу, которая будет перестраиваться.
Ответ 2
Если вы хотите удалить контент, но его ячейки остаются нетронутыми, то:
public static void clearTable(final JTable table) {
for (int i = 0; i < table.getRowCount(); i++)
for(int j = 0; j < table.getColumnCount(); j++) {
table.setValueAt("", i, j);
}
}
}
ОК, если вы хотите удалить все ячейки, но сохраните их заголовки:
public static void deleteAllRows(final DefaultTableModel model) {
for( int i = model.getRowCount() - 1; i >= 0; i-- ) {
model.removeRow(i);
}
}
Ответ 3
//To clear the Contents of Java JTable
DefaultTableModel dm = (DefaultTableModel) JTable1.getModel();
for (int i = 0; i < dm.getRowCount(); i++) {
for (int j = 0; j < dm.getColumnCount(); j++) {
dm.setValueAt("", i, j);
}
}
Ответ 4
У вас есть несколько вариантов:
- Создайте
new DefaultTableModel()
, но не забудьте снова подключить всех слушателей.
- Итерации по
model.removeRow(index)
для удаления.
- Определите свою собственную модель, которая обертывает List/Set и выставляет метод
clear
.
Ответ 5
Я думаю, вы имели в виду, что хотите очистить все ячейки в jTable и сделать его просто как новый пустой jTable.
Например, если ваша таблица содержит 40 raw файлов, вы можете сделать следующее.
DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
model.setRowCount(0);
model.setRowCount(40);
Ответ 6
Еще один простой ответ:
defaultTableModel.getDataVector().removeAllElements();
Ответ 7
public void deleteAllRows() {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
model.setRowCount(0);
}