mira yo lo hago asi. hago la conexion y extraigo los datos asi
while(rs1.next()){
data[0]=(rs1.getString(2));
data[1]=(rs1.getString(5));
dtm.addRow(data);
}
claro que cuando preciono la otra opcion el resulset es otro por lo tanto cambia
Ok mira.. Como lo estas haciendo funciona, pero no es la mejor manera de trabajar con tablas en Java.
¿Por qué? Bueno, lo que te dije arriba, en Java la idea con las tablas es que el JTable sea únicamente el medio de "visualización", y el TableModel sea la interfaz que se comunica con los datos.
Tu problema en particular lo podes solventar justo como dijo g00mba con el siguiente código:
for (int i=0; i<dtm.getRowCount(); i++)
{
dtm.removeRow(0);
}
Este es uno de los casos que yo no recomendaria usar un ciclo FOR, porque hace dificil entender que es lo que hace el algoritmo.. talvez se entienda mejor con un while:
while(dtm.getRowCount()>0) {
dtm.removeRow(0);
}
El DefaultTableModel almacena las filas internamente en un vector. Cada vez que quites un elemento se ira reduciendo la cantidad de filas hasta que el contador llegue a cero. Una vez llegue a cero no intentará seguir eliminado más filas. Si te fijas solo elimino el primer elemento, ya que si eliminara posición por posición tendría que tener un contador para saber que elemento es el que estoy eliminando.
Para tu caso estas utilizando el DefaultTableModel, que posee la funcion "removeRow". Ten cuidado, que no estamos hablando del JTable.
La lógica es más o menos así:
[JTable] --- despliega la informacion que obtiene de ---> [DefaultTableModel] --- que almacena los datos en un ---> [Vector]
Si te fijas en el nombre de la variable "dtm", veras que se refiere a "DefaultTableModel" y no al JTable. Una tabla no puede ser modificada directamente. Lo que modificas es el modelo de datos.
Esto es un poquito dificil de comprender al principio, pero es importante que sepas que estas eliminando los datos del modelo de la tabla, y no del elemento grafico JTable.