Comment effacer le contenu d'un jTable?

j'ai une jTable et il y a un modèle de table défini comme ceci:

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

est ce que quelqu'un sait comment je peux effacer son contenu ? Juste pour qu'il retourne à une table vide ?

16
demandé sur Arpan 2010-10-07 11:42:35

8 réponses

voie la plus facile:

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

c.-à-d. votre méthode de réinitialisation dire au modèle d'avoir 0 lignes de données le modèle lancera les événements appropriés de changement de données à la table qui se reconstruira.

31
répondu locka 2010-10-07 16:00:56

Si vous voulez supprimer le contenu, mais ses cellules restent intactes, puis:

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, si vous voulez enlever toutes les cellules mais maintenir ses headers:

public static void deleteAllRows(final DefaultTableModel model) {
    for( int i = model.getRowCount() - 1; i >= 0; i-- ) {
        model.removeRow(i);
    }
}
10
répondu eee 2010-10-07 08:11:19
    //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
répondu Gebreigziabher Abadi 2015-08-03 13:45:12

Vous avez deux options:

  1. Créer un new DefaultTableModel(), mais n'oubliez pas de ré-attacher tous les auditeurs.
  2. parcourir model.removeRow(index) supprimer.
  3. Définissez votre propre modèle qui enveloppe une liste / Set et exposez le clear méthode.
2
répondu willcodejavaforfood 2015-08-03 14:43:11

je pense que vous vouliez dire que vous voulez effacer toutes les cellules dans le jTable et faire comme un nouveau JTable blanc. Par exemple, si votre table contient 40 raws, vous pouvez faire ce qui suit.

DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
model.setRowCount(0);
model.setRowCount(40);
0
répondu Malith 2015-02-08 07:53:11

l'Une des méthodes triviales est d'utiliser l'option suivante.

dataModel.setRowCount(0);

dataModel est le modèle que vous souhaitez effacer le contenu sur

cependant, ce n'est pas une solution optiomale.

0
répondu Farruh Habibullaev 2018-03-21 18:47:38

Autre réponse facile:

defaultTableModel.getDataVector().removeAllElements();
-1
répondu james.garriss 2012-05-21 14:42:39
public void deleteAllRows() {
    DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
    model.setRowCount(0);
}
-1
répondu Garrett Bates 2017-05-10 20:20:12