Ver Mensaje Individual
  #12 (permalink)  
Antiguo 12/10/2010, 10:07
jmordan
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Creación de tableModel

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