webentwicklung-frage-antwort-db.com.de

Wie lösche ich den Inhalt einer jTabelle?

Ich habe eine jTable und es hat ein Tabellenmodell wie folgt definiert:

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

Weiß jemand, wie ich den Inhalt löschen kann? Nur damit es zu einem leeren Tisch zurückkehrt? 

16
tom

Einfachster Weg:

//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);
}

ihre Rücksetzmethode weist das Modell an, 0 Datenzeilen zu haben. Das Modell löst die entsprechenden Datenänderungsereignisse für die Tabelle aus, die sich selbst neu aufbaut.

31
locka

Wenn Sie den Inhalt entfernen möchten, die Zellen jedoch intakt bleiben, gilt Folgendes:

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);
      }
   }
}

OK, wenn Sie alle Zellen entfernen, aber die Kopfzeilen beibehalten möchten:

public static void deleteAllRows(final DefaultTableModel model) {
    for( int i = model.getRowCount() - 1; i >= 0; i-- ) {
        model.removeRow(i);
    }
}
10
eee
    //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);
        }
    }

Sie haben mehrere Möglichkeiten:

  1. Erstellen Sie eine new DefaultTableModel(), aber denken Sie daran, alle Listener erneut anzuschließen.
  2. Iterieren Sie die zu entfernende model.removeRow(index).
  3. Definieren Sie Ihr eigenes Modell, das eine Liste/Gruppe umschließt, und machen Sie die clear-Methode verfügbar.
2

Ich denke, Sie meinten damit, dass Sie alle Zellen in der jTable löschen und es wie eine neue leere jTable machen wollen. Ein Beispiel: Wenn Ihre Tabelle 40 Rohdaten enthält, können Sie Folgendes tun. 

DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
model.setRowCount(0);
model.setRowCount(40);
0
Malith

Eine der trivialen Methoden ist die Verwendung der folgenden Option.

dataModel.setRowCount(0);

datenmodell ist das Modell, für das Sie den Inhalt löschen möchten

Es ist jedoch keine optimale Lösung.

0