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?
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.
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);
}
}
//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 plusieurs options:
new DefaultTableModel()
, mais n'oubliez pas de reconnecter tous les écouteurs.model.removeRow(index)
à supprimer.clear
.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);
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.