java - tabla - Eliminando todas las filas en una JTable
ordenar columnas jtable java (14)
Algo como esto debería funcionar
DefaultTableModel model = (DefaultTableModel)this.getModel();
int rows = model.getRowCount();
for(int i = rows - 1; i >=0; i--)
{
model.removeRow(i);
}
Necesito eliminar todas las filas en mi JTable.
He intentado ambos de los siguientes:
/**
* Removes all the rows in the table
*/
public void clearTable()
{
DefaultTableModel dm = (DefaultTableModel) getModel();
dm.getDataVector().removeAllElements();
revalidate();
}
y
((DefaultTableModel)table.getModel()).setNumRows(0);
Ninguno de los cuales eliminaría todas las filas. ¿Algunas ideas?
Bueno, setNumRows (0) debería funcionar, aunque si realmente lees la API te dice que este método está obsoleto y te dice qué método usar en su lugar.
Si el código no funciona, entonces está haciendo algo incorrecto y no podemos decir cuál podría ser el código publicado.
Publique su SSCCE que demuestre el problema.
El siguiente código funcionó para mí:
DefaultTableModel dm = (DefaultTableModel) getModel();
int rowCount = dm.getRowCount();
//Remove rows one by one from the end of the table
for (int i = rowCount - 1; i >= 0; i--) {
dm.removeRow(i);
}
Intente esto si desea borrar la tabla después de restablecerla.
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
model.getDataVector().removeAllElements();
jTable1.removeAll();
La forma más sencilla de eliminar todas las filas de JTable, solo use este método ...
tablemodel.getDataVector().removeAllElements();
tablemodel.fireTableDataChanged();
modelo de tablemodel
es el modelo que creó para su tabla para agregar nuevas filas. Esta es la forma más rápida y corta de borrar todas las filas, porque ¿qué pasa si tienes miles de filas? Looping?
Lea la API para el método DefaultTableModel - setRowCount permite eliminar / descartar todas las filas de una sola vez ...
((DefaultTableModel)myTable.getModel()).setRowCount(0);
O si tienes muchas filas pero muy pocas columnas ...
DefaultTableModel dtm = new DefaultTableModel();
for(int i=0;i<NUM_COLS;i++) dtm.addColumn(COLUMN_NAME[i]);
myTable.setModel(dtm);
... reemplaza el antiguo DTM por uno nuevo.
Podemos usar DefaultTableModel.setRowCount (int) para este propósito, refiriéndonos a la Documentación de Java:
public void setRowCount (int rowCount)
Establece el número de filas en el modelo. Si el nuevo tamaño es mayor que el tamaño actual, se agregan nuevas filas al final del modelo. Si el nuevo tamaño es menor que el tamaño actual, todas las filas en el índice rowCount y superior se descartan .
Esto significa que podemos borrar una tabla como esta:
DefaultTableModel dtm = (DefaultTableModel) jtMyTable.getModel();
dtm.setRowCount(0);
Ahora, en "¿cómo descarta Java esas filas?", Creo que solo llama a algún tipo de C libre (vacío *) en algún momento, o tal vez simplemente elimina todas las referencias a esa zona de memoria y deja que GC se preocupe, la documentación no es muy clara con respecto a cómo funciona esta función internamente.
Prueba este código Esto eliminará todas las filas de JTable.
DefaultTableModel model=new DefaulTableModel(rows,cols);
JTable table=new JTable(model);
for(int i=0;i<model.getRowCount();i=i+0)
{
model.removeRow(0);
revalidate();
}
Tenía varias tablas, así que creé un método para borrar "cualquier" tabla:
private void deleteAllTableRows(JTable table) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
while( model.getRowCount() > 0 ){
model.removeRow(0);
}
}
DefaultTableModel model = (DefaultTableModel)this.NAMETABLE.getModel();
int rows = model.getRowCount();
for(int i = rows - 1; i >=0; i--)
{
model.removeRow(i);
}
DefaultTableModel tm = (DefaultTableModel) tbl.getModel();
while(tbl.getRowCount() > 0)
{
((DefaultTableModel) tbl.getModel()).removeRow(0);
}
MyModel myTableModel = (MyModel) myTable.getModel();
for (int i = myTableModel.getRowCount()-1; i >= 0; i--) myTableModel.deleteRow(i);
try{
DefaultTableModel dtm = (DefaultTableModel) jTable2.getModel();
dtm.setNumRows(0);
}catch(Exception e){
}