JTable

Oi pessoal,
Estou desenvelvendo um sistema onde o usuario escolhe uma categoria de um combobox e a partir desta sera listados todos os itens no
JTable. Nao existe nenhum erro de compilacao, mas o resultado da consulta nao esta aparecendo no JTable.
Algeum pode me ajudar?

Vejam o codigo:

    private javax.swing.JComboBox categoria;
    private javax.swing.JTable tabela;

    private Vector cabecalho = new Vector();
    private Vector linhas = new Vector();
    private String recupera;


            categoria= new javax.swing.JComboBox();
            tabela= new javax.swing.JTable(linhas,cabecalho);


              ListarCategoria();
        categoria.setBorder(new javax.swing.border.BevelBorder(0));
        //jComboBox1.setFont(new java.awt.Font ("Century Gothic", 0, 12));
        categoria.setBackground(java.awt.Color.white);
        getContentPane().add(categoria);
        categoria.setBounds(130, 40, 240, 20);
        categoria.addItemListener(
        
        new ItemListener(){
            public void itemStateChanged( ItemEvent event){
                
                
                
                String cat = (String) categoria.getSelectedItem();
                preencher(cat);
               
            }
        }
        );

           
       
       
        JScrollPane scroller = new JScrollPane(tabela);  
        scroller.setBackground(java.awt.Color.white);         
        getContentPane().add(scroller);
        scroller.setBounds(50, 90, 480, 140);

       public void preencher(String x){
        String escolha = x;
        
        
        conexao();
        //bloco try responsavel por recuperar o codigo da categoria
        try{
            Stmt=con.createStatement();
            
            RS= Stmt.executeQuery("Select cod_categoria from Categoria  where nome = '"+escolha+"'");
            int i=0;
            if(RS.next()){
                
                cod = RS.getString("cod_categoria");
            }
            
            // JOptionPane.showMessageDialog(null,
            // cod);
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null,"Erro ao Recuperar o codigo da categoria!",
            "Mensagem",JOptionPane.ERROR_MESSAGE);
        }
        //bloco try responsavel por recuperar os dados do produto
        try{
            Stmt=con.createStatement();
            
            RS= Stmt.executeQuery("Select *  from Produto where cod_categoria = "+Integer.parseInt(cod) );
            RS.next();
                
            ResultSetMetaData rsmd = RS.getMetaData();
             for(int i = 1; i<=rsmd.getColumnCount(); i++)
           
                 cabecalho.addElement(rsmd.getColumnName(i));
          
            
            do{

              linhas.addElement(proximaLinha(RS,rsmd) );
              }
              while(RS.next());
            
           
              fechar();
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null,"Erro ao Executar a Consulta!",
            "Mensagem",JOptionPane.ERROR_MESSAGE);
        }
              
        
        
    }
              private Vector proximaLinha(ResultSet RS, ResultSetMetaData rsmd){

              Vector LinhaAtual = new Vector();  
              try
              {

              for ( int i = 1; i<=rsmd.getColumnCount();i++)
             
                                          
                   switch(rsmd.getColumnType(i))
              {
               case Types.VARCHAR: LinhaAtual.addElement(RS.getString(i));
               break;
               case Types.TIMESTAMP: LinhaAtual.addElement(RS.getDate(i));
               break;
               case Types.NUMERIC: LinhaAtual.addElement(new Long(RS.getLong(i)));
               break;
               }
               }
               catch(SQLException e){
               e.printStackTrace();
               
               }
               return LinhaAtual;
               }

Ja tentou executar alguma coisa simples pra ver se funciona? Tipo, iniciar com alguma coisa carregada, ou dispara pelo botao pra alimentar a JTable.

Sai debugando ai com System.out.println pra saber onde está o prblema, ou pelo menos onde pode estar ocorrendo :smiley:

Oi Bruno,

Iniciei o metodo para preencher o JTable direto funcionou, mas aconteceu alguns erros como nao aparecer a cor da tela.Tambem tentie alimantar o Jtable atraves de um evento disparado por um botao mas este continua em branco.

Obs.: Existe algum compenente parecido com o DefaultListModel para ser usado no JTable?

Tem o DefaultTableModel, assim como o list tem o modelo default, a JTable tb tem… Nesse tutorial dá uns exemplos pra trabalhar com ele, nao sei se vc ja viu.

Oi Bruno,

Troquei o vetor linhas que estava elimentando o Jtable pelo DefaultTable
linha e esta dando o seguinte erro:

   method addElement(java.util.Vector)
   class javax.swing.table.DefaultTableModel
   linha.addElemnt(proximaLinha(RS, rsmd));

Usei o mesmo codigo assima com o Jlist e o DefaultList e deu “certo”.

OBS1.: posso usar o addElement com DefaultTable?

OBS2.: ja dei uma olhada no artigo que vc mensionou nao encontrei nenhum
exemplo que se encaixe no meu problema.