Jtable não mostra linhas (resolvido)

Olá amigos

despois de pesquisar muito não encontrei neda que pudesse me ajudar. Criei uma classe que monta uma jTable em tempo de execução até aí tudo bem, quando mostra o frame a tabela aparece com suas colunas, mas depois de selecionar o registro que desejo a jTable não mostra nada as linhas ficam em branco.

    public ClassInicializaTable tabela = new ClassInicializaTable();;
    /** Creates new form OrdemServico */
    public OrdemServico() {
        initComponents();
        dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
        String[] colunasTabela = {"Nº Orçamento", "Data Orçamento", "Hora","Cliente"};
       int [] tamanhoColunas = {10,10,10,100};
       //montaTabela(colunasTabela,tamanhoColunas);
       int [] posicaoTabela = {50,450,600,150};
       try {
           tabela.montaTabela(colunasTabela, tamanhoColunas, posicaoTabela);
           jPanel3.add(tabela.scroller);
           jPanel3.add(tabela.scroller).setVisible(true);
            
        } catch (Exception ex) {
            Logger.getLogger(OrdemServico.class.getName()).log(Level.SEVERE, null, ex);
        }
       
    }

chamda para popular a jTable.

   tabela.preencheTabela(rs);

aqui a classe:

package assistenciadesktop;

import java.sql.ResultSet;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author silvio
 */

public class ClassInicializaTable {
    static  java.sql.Statement stmt;
    static String mnome, macao;
    static Object id;
    public int linhatabela;
    static ResultSet rs;
    public String [] Colunas;
    public int [] TamanhoCol;
    public JTable jTable1 = new JTable();
    public JScrollPane scroller = new JScrollPane(jTable1);
    public DefaultTableModel aModel = new DefaultTableModel();;
    
public void ClassInicializaTable () {
}
    
public void montaTabela(String[] nomeColunas, int [] tamanhoColunas,int [] posicaoTabela) throws Exception {
   String[] tableColumnsName = nomeColunas;        

   DefaultTableModel aModel = new DefaultTableModel(nomeColunas, 0) {

      @Override
      public Class getColumnClass(int column) {
         Class returnValue;
         if ((column >= 0) && (column < getColumnCount())) {
            if (getValueAt(0, column) != null) {
               returnValue = getValueAt(0, column).getClass();
            } else {
              returnValue = Object.class;
            }
         } else {
            returnValue = Object.class;
         }
         return returnValue;
      }

      @Override
      public boolean isCellEditable(int row, int col) {
         return false;
      }
  };
        
 aModel.setColumnIdentifiers(nomeColunas);      
 Colunas = nomeColunas;
 TamanhoCol = tamanhoColunas;
 jTable1.setModel(aModel);  
 scroller.setBounds(posicaoTabela[0], posicaoTabela[1], posicaoTabela[2], posicaoTabela[3]);

}

public void preencheTabela(ResultSet rs) throws Exception {
    
//  java.sql.ResultSetMetaData rsmd = rs.getMetaData();
     
 
  int colNo = Colunas.length;
        
  while(rs.next()){
      Object[] objects = new Object[colNo];
      for(int i = 0; i < colNo; i++) {
         objects[i] = rs.getObject(i+1);
      }   
      aModel.addRow(objects);
  }
  
  jTable1.setFillsViewportHeight(true);
  jTable1.getTableHeader().setReorderingAllowed(false);
  //for(int i = 0; i < colNo; i++) {
  //   jTable1.getColumnModel().getColumn(i).setPreferredWidth(TamanhoCol[i]);
 // }
  
}

}

se alguém puder ajudar?

muito obrigado

Silvio Guedes

Olá amigos

depois de tentar muito consegui resolver o que precisava. Segue o resultado:


   public ClassInicializaTable tabela = new ClassInicializaTable();;
 
   public OrdemServico() {
        initComponents();
        dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
        String [] colunasTab = {"Nº Orçamento","Data Orçamento","Hora","Cliente"};
        int [] tamanhoCol = {10,10,10,100};        
        int [] posicaoTab = {50,450,600,150};
        colunasTabela = colunasTab;
        tamanhoColunas = tamanhoCol;
        posicaoTabela = posicaoTab;        
        try {
       --> aqui a chamada passando do parametro false para que não popule a jtable
            tabela.preencheTabela(false,rs,colunasTabela, tamanhoColunas, posicaoTabela);
       <---
            jPanel3.add(tabela.scroller);
            jPanel3.add(tabela.scroller).setVisible(true);
             
         } catch (Exception ex) {
             Logger.getLogger(OrdemServico.class.getName()).log(Level.SEVERE, null, ex);
         }
       
    }

esta classe serve para que seja utilizada em todo o projeto sem precisar reescrever o código novamente.

public class ClassInicializaTable {
....
public void preencheTabela( boolean pesquisa, ResultSet rs,String[] nomeColunas, int [] tamanhoColunas,int [] posicaoTabela) throws Exception {
    
   String[] tableColumnsName = nomeColunas;        

   DefaultTableModel aModel = new DefaultTableModel(nomeColunas, 0) {

      @Override
      public Class getColumnClass(int column) {
         Class returnValue;
         if ((column >= 0) && (column < getColumnCount())) {
            if (getValueAt(0, column) != null) {
               returnValue = getValueAt(0, column).getClass();
            } else {
              returnValue = Object.class;
            }
         } else {
            returnValue = Object.class;
         }
         return returnValue;
      }

      @Override
      public boolean isCellEditable(int row, int col) {
         return false;
      }
  };
        
 aModel.setColumnIdentifiers(nomeColunas);      
 Colunas = nomeColunas;
 TamanhoCol = tamanhoColunas;
 jTable1.setModel(aModel);  
 scroller.setBounds(posicaoTabela[0], posicaoTabela[1], posicaoTabela[2], posicaoTabela[3]);

    //  java.sql.ResultSetMetaData rsmd = rs.getMetaData();
     
if (pesquisa) {    
   int colNo = Colunas.length;
        
   while(rs.next()){
      Object[] objects = new Object[colNo];
      for(int i = 0; i < colNo; i++) {
         objects[i] = rs.getObject(i+1);
      }   
      aModel.addRow(objects);
   }
   jTable1.setModel(aModel);   
   jTable1.setFillsViewportHeight(true);
   jTable1.getTableHeader().setReorderingAllowed(false);
  
  }
} 

–> aqui a chamada passando o parametro true para que popule a jtable <—

       tabela.preencheTabela(true,rs,colunasTabela, tamanhoColunas, posicaoTabela);

Silvio Guedes