JTable

4 respostas
fsf

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

4 Respostas

brlima

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:

fsf

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?

brlima

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.

fsf

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.

Criado 11 de julho de 2004
Ultima resposta 13 de jul. de 2004
Respostas 4
Participantes 2