Подтвердить что ты не робот

Как очистить содержимое jTable?

У меня есть jTable, и он получил модель таблицы, определенную следующим образом:

javax.swing.table.TableModel dataModel = 
     new javax.swing.table.DefaultTableModel(data, columns);
tblCompounds.setModel(dataModel);

Кто-нибудь знает, как я могу очистить его содержимое? Просто он возвращается к пустой таблице?

4b9b3361

Ответ 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);
}