2010-10-07 11 views
16

Tengo un JTable y tiene un modelo de tabla definida así:¿Cómo borrar los contenidos de una jTable?

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

¿Alguien sabe cómo puedo borrar su contenido? ¿Así que vuelve a una mesa vacía?

Respuesta

30

La manera más fácil:

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

es decir, el método de restablecimiento dice el modelo que tienen 0 filas de datos El modelo se dispare los eventos de cambio de datos correspondientes a la tabla que reconstruirse.

+1

+1, (con un ligero cambio), la interfaz TableModel no tiene un método setRowCount(). Ese método se encuentra en la clase DefaultTableModel. Edité el código de muestra para usar el DefaultTableModel, no el TableModel. – camickr

+0

+1 ... correcto, me olvidé de DefaultTableModel.SetRowCount (0) – eee

+0

-100 Esta no es la respuesta correcta si entendí la pregunta. En esta pregunta la mayoría de las veces queremos decir y queremos vaciar las celdas de la tabla y ΝΟΤ ¡tener una TABLA SIN CELULAS! Siga la respuesta de @Gebreigziabher Abadi a continuación como la más correcta, pero cambiando el 'dm.setValueAt (" ", i, j);' con 'dm.setValueAt (null, i, j);' – Universe

9

Si se refiere a eliminar el contenido, sino que sus células permanecen intactas, entonces:

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

bien, si te refieres a eliminar todas las células, pero mantener sus cabeceras:

public static void deleteAllRows(final DefaultTableModel model) { 
    for(int i = model.getRowCount() - 1; i >= 0; i--) { 
     model.removeRow(i); 
    } 
} 
+0

Lo sentimos, quiero volver a la mesa de un estado donde su acaba de conseguir los títulos de las columnas, pero no hay datos en él – tom

+0

(virtual) -1 para la segunda parte: como siempre que se sepa que la El tipo de modelo es DefaultTableModel, el método correcto para llamar es setRowCount (0). – kleopatra

2

Tienes un par de opciones:

  1. Cree un new DefaultTableModel(), pero recuerde volver a conectar los oyentes.
  2. Iterar el model.removeRow(index) para eliminarlo.
  3. Define tu propio modelo que envuelve una Lista/Conjunto y expone el método clear.
+1

DefaultTableModel _hace_ un método claro - simplemente nombrado de manera diferente :-) – kleopatra

-1

Otra respuesta fácil:

defaultTableModel.getDataVector().removeAllElements(); 
+0

no, eso es completamente incorrecto: nunca cambie los datos bajo los pies del modelo, en su lugar use el modelo api – kleopatra

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

a juzgar por el hecho de que el OP aceptó una respuesta que eliminó todas las filas que vaciaban el contenido de la celda no parece lo que él/ella quería lograr :-) Y si ese fuera el objetivo, configurar el contenido en una cadena vacía no es vaciarlo y puede explotar en su cara (si el modelo espera otro tipo): por lo tanto, mejor anule el contenido. – kleopatra

0

Creo que quería decir que desea borrar todas las células en el JTable y que sea igual que una nueva JTable en blanco. Por ejemplo, si su tabla contiene 40 raws, puede hacer lo siguiente.

DefaultTableModel model = (DefaultTableModel)this.jTable.getModel(); 
model.setRowCount(0); 
model.setRowCount(40); 
-1
public void deleteAllRows() { 
    DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 
    model.setRowCount(0); 
} 
+2

Por favor, agrega algunos comentarios también –

Cuestiones relacionadas