Setar valor em field dependendo da condição do combo

4 respostas
D

Oi, estou com um problema aqui com um código em que ao selecionar um item no comboBox, deveria setar os demais valores daquela linha da tabela nos fields e demais campos.

Só que não consigo:
Lá vai o código:

private void  selectCodGado() {
         new conexao();
         try {
           
           con = DriverManager.getConnection("jdbc:mysql://localhost/gado", "root", "2017");
           stmt = con.createStatement();
              
              String sql = "SELECT codGado, raca, idade, sexo, dataInsemin, "+
                "dataSecagem, criasMasc, criasFemin FROM tabela1"; 
               rs = stmt.executeQuery(sql);
                  
               while (rs.next()) { 
                   boxCodGado.addItem(rs.getString("codGado"));
                    }
                    boxCodGado.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent e) {
                           String codSelecionado = boxCodGado.getSelectedItem().toString();
                           // String <nome da string>=String.valueOf( <variável float> );
                           // String st = fieldIdade.getText();  float f = Float.parseFloat(st) 
                           //ou st = String.valueOf(f);
                           try {
                                   fieldNome.setText(rs.getString("raca"));
                                   fieldIdade.setText(rs.getString("idade"));
                                   boxSexo.setSelectedItem(rs.getString("sexo"));
                                   fieldInsemin.setText(rs.getString("dataInsemin"));
                                   fieldSecagem.setText(rs.getString("dataSecagem"));
                                   boxQuantCriasMasc.setSelectedItem(rs.getString("criasMasc"));
                                   boxQuantCriasFemin.setSelectedItem(rs.getString("criasFemin"));
                                   
                                   } catch(SQLException sqlex) {
                                       
                                   JOptionPane.showMessageDialog(null, "Erro inesperado!\n" +sqlex, 
                                       "Erro", JOptionPane.ERROR_MESSAGE);
                                    }
                        }
                    });
                
                stmt.close();
                con.close();
               
            } catch(SQLException sqlex) {
                JOptionPane.showMessageDialog(null, "Erro inesperado!\n" +sqlex, "Erro", JOptionPane.ERROR_MESSAGE);
            }
        }

Alguma ajuda?

tanks.

4 Respostas

71C4700

Não seria melhor voce criar um metodo ou classe pra tratar a parte de Consulta ?
mais ou menos assim , um metodo que receberia uma String e retornaria uma Arraylist com os valores e voce então setaria no model da JTable, caso voce ja tenha implementado o seu, ai a JTable era auterada instantaneamente

D

Bem pensado.

Como estou utilizando um JTable em todos os selects, por que não utilizar uma tabela
para atualizar os dados também? :smiley:
Vou fazer isso com a ajuda de um Vetor para cabeçalho e linhas. Obrigado por me lembrar disso.

Mas aí eu teria que aprender a mascarar colunas ou até linhas inteiras na tabela, para que o usuário
não insira dados inválidos, e isso eu já tentei e não obtive resultados.

D

Eu remontei o painel, mas agora eu não sei como posso adicionar um listener para o botão [b]"Alterar"[/n].

Já que se trata de uma tabela, utilizando um vetor eu não sei se ao clicar no botão
"alterar", tem que criar a conexão e ainda recuperar os dados pelo vetor.
Acho que é isso, mas estou tentando fazer isso em outra classe pra não ficar muito bagunçado:

Poderiam me ajudar com isso?

[img]http://i30.servimg.com/u/f30/11/80/81/44/painel10.gif[/img]

private void buscaTabela() {   
    /** inicialização de conexão ao banco  ****/
     new conexao();   
     
     try {
         con = DriverManager.getConnection("jdbc:mysql://localhost/gado", "root", "2017");
        
       Vector cabecalho = new Vector();
       Vector linhas = new Vector();
       
       st = con.createStatement();   

 // Selecionando dados da tabela1  ****
        rs = st  .executeQuery("SELECT codGado, raca, idade, sexo, dataInsemin, "+
                "dataSecagem, criasMasc, criasFemin " +
                   "FROM tabela1 WHERE codGado = '" + fieldCons1.getText() + "';");  
      
            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());  
            
            tabela = new JTable(linhas, cabecalho);
            tabela.setFont( f );
            
            scroller = new JScrollPane(tabela); 
            
            JPanel pTabela = new JPanel(new BorderLayout());
             
                JPanel pAlt = new JPanel(new FlowLayout());
                   bAlterar = new JButton("Alterar");
                   pAlt.add(bAlterar);
                 
               pTabela.add(scroller, BorderLayout.CENTER);
               pTabela.add(pAlt, BorderLayout.SOUTH);
                   
            p1.add(pTabela, BorderLayout.CENTER);
            
            validate();   
            st.close(); 
            
         } catch (SQLException sqlex) {
             JOptionPane.showMessageDialog(this, "Erro ao retornar dado!\n" + sqlex,
               "Erro", JOptionPane.ERROR_MESSAGE);
         }     
      }   
  
          
      private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd) {   
          
         Vector LinhaAtual = new Vector(); 
         
         try {   

                  LinhaAtual.addElement(rs.getString("codGado")); 
                  LinhaAtual.addElement(rs.getString("raca"));
                  LinhaAtual.addElement(rs.getFloat("idade"));
                  LinhaAtual.addElement(rs.getString("sexo"));
                  LinhaAtual.addElement(rs.getString("dataInsemin")); 
                  LinhaAtual.addElement(rs.getString("dataSecagem")); 
                  LinhaAtual.addElement(rs.getString("criasMasc"));
                  LinhaAtual.addElement(rs.getString("criasFemin"));
                  
                  
     
        } catch (SQLException sqlex2) { 
             JOptionPane.showMessageDialog(this, "Erro ao retornar dado!\n" + sqlex2,
             "Erro", JOptionPane.ERROR_MESSAGE);
             
        } catch (Exception ex2) { 
             JOptionPane.showMessageDialog(this, "Erro inesperado!\n" + ex2,
             "Erro", JOptionPane.ERROR_MESSAGE);
       } 
         return LinhaAtual;    
      }  // fim do vector

Obrigado.

D

Alguém sabe como fazer isso?

Se alguém conseguir me ajudar com o primeiro código, eu ainda aceito :smiley:

Obrigado.

Criado 19 de setembro de 2008
Ultima resposta 24 de set. de 2008
Respostas 4
Participantes 2