Bueno espero no sea tarde, aqui esta mi solucion a este problema.
Esta es una manera dinamica de crear el tablemodel.
primero intente pasandole un ResultSet como parametro al TableModel y me funciono perfectamente, salvo un problemita. LA CONEXION SIEMPRE DEBIA ESTAR ABIERTA.
asi que realize esto:
1- Creo un TableMoble apartir del AbstractTableModel
Código:
import javax.swing.table.AbstractTableModel;
public class ModeloDeTablas extends AbstractTableModel{
String[] colName; // arreglo tipo string que contendra los nombres de las colmnas
Object[][] data; // matriz tipo objeto que contredra los datos.
@Override
public String getColumnName( int c ) {
return colName[c];
}
/*************** getColumnCount() ******************/
public int getColumnCount() {
return colName.length;
}
/****************** getRowCount() *******************/
public int getRowCount() {
return data.length;
}
/******************* getValueAt() *********************/
public Object getValueAt( int fila, int col ) {
return data[fila][col];
}
public Class getColumnClass(int fila, int col) {
return data[fila][col].getClass();
}
}
luego desde un metodo en otra clase creo una instancia del TableModel anterior
Código:
public ModeloDeTablas getModelo(String query){
ModeloDeTablas modelo = new ModeloDeTablas();
Conexion newcon = new Conexion();
newcon.Consultar(query);
ResultSet rs = newcon.getResultset();
try {
int colCount = rs.getMetaData().getColumnCount();
String[] colName = new String[colCount]; //obtenemos la cantidad de columnas
//obtenemos la cantidad de filas
int rowCount = 0;
while(rs.next()){
rowCount++;
}
rs.beforeFirst();//colocamos el puntero antes del primer registro para poder recorrerlo nuevamente
Object[][] data = new Object[rowCount][colCount];
//obtenemos el nombre de cada colunma
for(int col=0;col<colCount;col++){
colName[col]= rs.getMetaData().getColumnLabel(col+1);
}
rs.beforeFirst();
//obtencion de datos
int row=0;
while(rs.next()){
for(int col=0;col<colCount;col++){
data[row][col]= rs.getObject(col+1);
}
row++;
}
modelo.colName = colName;
modelo.data = data;
} catch (SQLException ex) {
Logger.getLogger(MostrarDatos.class.getName()).log(Level.SEVERE, null, ex);
}
newcon.desconectar();
return modelo;
}