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 ?
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.
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);
}
}
//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);
}
}
Vous avez deux options:
- Créer un
new DefaultTableModel()
, mais n'oubliez pas de ré-attacher tous les auditeurs. - parcourir
model.removeRow(index)
supprimer. - Définissez votre propre modèle qui enveloppe une liste / Set et exposez le
clear
méthode.
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);
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.
Autre réponse facile:
defaultTableModel.getDataVector().removeAllElements();
public void deleteAllRows() {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
model.setRowCount(0);
}