web-dev-qa-db-fra.com

Comment effacer le contenu d'un jTable?

J'ai un jTable et il 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
tom

Manière la plus simple:

//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'est-à-dire que votre méthode de réinitialisation indique au modèle d'avoir 0 ligne de données. Le modèle déclenche les événements de modification de données appropriés dans la table, qui se reconstruit elle-même.

31
locka

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

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 supprimer toutes les cellules mais conserver ses en-têtes:

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

Vous avez plusieurs options:

  1. Créez un new DefaultTableModel(), mais n'oubliez pas de reconnecter tous les écouteurs.
  2. Parcourez le model.removeRow(index) à supprimer.
  3. Définissez votre propre modèle qui encapsule une liste/un ensemble et expose la méthode clear.
2

Je pense que vous vouliez dire que vous souhaitiez effacer toutes les cellules de la table jTable et la transformer en une nouvelle table vierge vide . Par exemple, si votre table contient 40 données brutes, vous pouvez procéder comme suit. 

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

L'une des méthodes les plus simples consiste à utiliser l'option suivante.

dataModel.setRowCount(0);

modèle de données est le modèle que vous souhaitez effacer le contenu sur

Cependant, ce n'est pas la solution optimale.

0
Farruh Habibullaev