Problema com retorno de dados em tabela com scroll

2 respostas
D

Oi.

Não é bem um problema. Eu estou conseguindo realizar a tarefa com sucesso.

É assim: Uma das abas de uma tela mostram os dados de animais cadastrados na tabela.
Só que quando clico em atualizar, os dados são setados de novo, só que o painel também é, e se depois disso o usuário maximizar a tela, vai ficar um erro horrível sobre ela.

Visualização:
[img]http://www.javafree.org/javabb/file/d.jbb?fileId=1017[/img]

codigo:
private void buscaTabela3() {   
    /** inicialização de conexão ao banco  ****/
    
     new conexao();
     Statement st3;   
     ResultSet rs3;  
     
      String url3 = "jdbc:mysql://localhost/gado";   
      String usuario3 = "root";   
      String senha3   = "2017"; 
      
     try { 
      con3 = DriverManager.getConnection(url3, usuario3, senha3);
  
       Vector cabecalho3 = new Vector();
       Vector linhas3 = new Vector();
        st3 = con3.createStatement();   

 // Selecionando apenas vacinas  ****
        rs3 = st3.executeQuery(
        "SELECT nomeVacina as 'Tipo de vacina', descricao as 'Descricao' FROM nomeVacinas");
        //"Vacinas v WHERE v.codproduto NOT IN (SELECT v.codprod FROM vendas v) ");
            rs3.next();  
            ResultSetMetaData rsmd3 = rs3.getMetaData();
            
            for (int i3 = 1; i3 <= rsmd3.getColumnCount(); ++i3)   
               cabecalho3.addElement(rsmd3.getColumnName(i3)); 
            do {   
               linhas3.addElement(proximaLinha3(rs3, rsmd3)); 
            } 
            while (rs3.next());  
            
            tabela3 = new JTable(linhas3, cabecalho3);
            tabela3.setFont( f );
            scroller3 = new JScrollPane(tabela3);       
            p3.add(scroller3, BorderLayout.CENTER);
           
            validate();   
            st3.close(); 
            
         } catch (SQLException sqlex3) {
             JOptionPane.showMessageDialog(null, "Erro ao retornar dado!\n" + sqlex3,
             "Erro", JOptionPane.ERROR_MESSAGE);   
         }   
      }   
       
      private Vector proximaLinha3(ResultSet rs3, ResultSetMetaData rsmd3) {   
          
         Vector LinhaAtual3 = new Vector(); 
         try {   
                  LinhaAtual3.addElement(rs3.getString("Tipo de vacina"));
                  LinhaAtual3.addElement(rs3.getString("Descricao"));  

        } catch (SQLException sqlex5) { 
             JOptionPane.showMessageDialog(null, "Erro ao retornar dado!\n" + sqlex5,
             "Erro", JOptionPane.ERROR_MESSAGE);    
        } catch (Exception ex5) { 
             JOptionPane.showMessageDialog(null, "Erro inesperado!\n" + ex5,
             "Erro", JOptionPane.ERROR_MESSAGE);
       } 
         return LinhaAtual3;   
         
      }  // fim do vect

Ajuda?

Obrigado.

2 Respostas

devel.andrerocha

Tive problemas similares na atualização de dados em swing…normalmente reolvo usando o updateUI, tenta adicionar pra ver nq da

D

Tentei usar sim, só que não aiantou nada.

private void buscaTabela3() {   
    /** inicialização de conexão ao banco  ****/
    
     new conexao();
     Statement st3;   
     ResultSet rs3;  
     
      String url3 = "jdbc:mysql://localhost/gado";   
      String usuario3 = "root";   
      String senha3   = "2017"; 
      
     try { 
      con3 = DriverManager.getConnection(url3, usuario3, senha3);
  
       Vector cabecalho3 = new Vector();
       Vector linhas3 = new Vector();
        st3 = con3.createStatement();   

 // Selecionando apenas vacinas  ****
        rs3 = st3.executeQuery(
        "SELECT nomeVacina as 'Tipo de vacina', descricao as 'Descricao' FROM nomeVacinas");
        //"Vacinas v WHERE v.codproduto NOT IN (SELECT v.codprod FROM vendas v) ");
            rs3.next();  
            ResultSetMetaData rsmd3 = rs3.getMetaData();
            
            for (int i3 = 1; i3 <= rsmd3.getColumnCount(); ++i3)   
               cabecalho3.addElement(rsmd3.getColumnName(i3)); 
            do {   
               linhas3.addElement(proximaLinha3(rs3, rsmd3)); 
            } 
            while (rs3.next());  
            
            tabela3 = new JTable(linhas3, cabecalho3);
            tabela3.setFont( f );
            
            tabela3.setBackground(java.awt.Color.white);   
            tabela3.revalidate();   
            tabela3.setBorder(new javax.swing.border.SoftBevelBorder(0)); 

            tabela3.updateUI();
            
            scroller3 = new JScrollPane(tabela3); 
            scroller3.updateUI();
            p3.add(scroller3, BorderLayout.CENTER);
            p3.updateUI();
           
            validate();   
            st3.close(); 
            
         } catch (SQLException sqlex3) {
             JOptionPane.showMessageDialog(null, "Erro ao retornar dado!\n" + sqlex3,
             "Erro", JOptionPane.ERROR_MESSAGE);   
         }   
      }   
       
      private Vector proximaLinha3(ResultSet rs3, ResultSetMetaData rsmd3) {   
          
         Vector LinhaAtual3 = new Vector(); 
         try {   
                  LinhaAtual3.addElement(rs3.getString("Tipo de vacina"));
                  LinhaAtual3.addElement(rs3.getString("Descricao"));  

        } catch (SQLException sqlex5) { 
             JOptionPane.showMessageDialog(null, "Erro ao retornar dado!\n" + sqlex5,
             "Erro", JOptionPane.ERROR_MESSAGE);    
        } catch (Exception ex5) { 
             JOptionPane.showMessageDialog(null, "Erro inesperado!\n" + ex5,
             "Erro", JOptionPane.ERROR_MESSAGE);
       } 
         return LinhaAtual3;   
         
      }  // fim do vector
Criado 29 de setembro de 2008
Ultima resposta 30 de set. de 2008
Respostas 2
Participantes 2