[Resolvido] - Setar informações de uma classe em outra

7 respostas
Alix

Eu fiz uma aplicação com duas telas, uma de cadastro e outra de que mostra o consumo do cliente.
Na tela cadastro tem um botão "consumo", onde pode ser feita a pesquisa do que o cliente consumiu, mas eu quero jogar esses dados em outra tela dentro de um JLabel.
Eu fiz.. mas ele não mostra as informações.

Botão consumo
private void BT_PesqConsumoMouseClicked(java.awt.event.MouseEvent evt) {
            if (TF_Pesquisa.getText().isEmpty()){
                JOptionPane.showMessageDialog(null, "Digite o CPF para efutar a consulta.");
            }
            
            else if(TF_Pesquisa.getText() != null){
            try {
            
            String comando = "select nome,cpf,codbarras"
                  + " FROM cliente WHERE cpf ='" +TF_Pesquisa.getText()+ "'";  
            PreparedStatement prep = con_Cadastro.conexao.prepareStatement(comando);  
            //esse retornaConexao está tratando da conexão com o bd.  
            ResultSet rs = prep.executeQuery();  
            
            if(rs.next()){
            //rs.next();
            //se for Varchar ou char usa rs.getString
            String Nome = rs.getString("nome");   
            int Cpf = rs.getInt("cpf");
            int Codbarras = rs.getInt("codbarras");
            
            Consumo valor = new Consumo();
            valor.alterText( String.valueOf(Nome) );
            valor.alterText( String.valueOf(Cpf) );
            valor.alterText( String.valueOf(Codbarras) );
            
            Consumo ir = new Consumo();
            ir.setVisible(true);
            dispose();
            }
            
            else{
                JOptionPane.showMessageDialog(null, "Cliente não encontrado!"); 
            }
            
            } catch (SQLException e){    
            e.printStackTrace();  

            } catch (Exception e){  
            e.printStackTrace();  
            }
            }   
        
    }
Classe que devia setar os dados.
public void alterText(String textoLabel ) // passa uma String    
    {    
        LB_Nom.setText(textoLabel);
        LB_Cpf.setText(textoLabel);
        LB_Codi.setText(textoLabel);
    }

Tks Galerinha.

7 Respostas

d34d_d3v1l

passa o objeto em questão por parametro entre uma janela e outra.
:slight_smile:

Alix

Dei uma olhadinha por ae… mas não entendi muito bem.

Alix

Bom.. eu alterei assim (tentando usar os parametros). Mas não continua sem mostrar...

Botão Pesquisar Consumo na classe Cadastro
private void BT_PesqConsumoMouseClicked(java.awt.event.MouseEvent evt) {
            if (TF_Pesquisa.getText().isEmpty()){
                JOptionPane.showMessageDialog(null, "Digite o CPF para efutar a consulta.");
            }
            
            else if(TF_Pesquisa.getText() != null){
            try {
            
            String comando = "select nome,cpf,codbarras"
                  + " FROM cliente WHERE cpf ='" +TF_Pesquisa.getText()+ "'";  
            PreparedStatement prep = con_Cadastro.conexao.prepareStatement(comando);  
            //esse retornaConexao está tratando da conexão com o bd.  
            ResultSet rs = prep.executeQuery();  
            
            if(rs.next()){
            //rs.next();
            //se for Varchar ou char usa rs.getString
            String Nome = rs.getString("nome");   
            int Cpf = rs.getInt("cpf");
            int Codbarras = rs.getInt("codbarras");
            
            Consumo valor = new Consumo();
            valor.alterText(Nome, Cpf, Codbarras);

            
            Consumo ir = new Consumo();
            ir.setVisible(true);
            dispose();
            }
            
            else{
                JOptionPane.showMessageDialog(null, "Cliente não encontrado!"); 
            }
            
            } catch (SQLException e){    
            e.printStackTrace();  

            } catch (Exception e){  
            e.printStackTrace();  
            }
            }   
        
    }
E na classe Consumo
public void alterText(String Nome, int Cpf, int Codbarras) // passa uma String    
    {    
        LB_Nom.setText(Nome);
        LB_Cpf.setText(String.valueOf(Cpf));
        LB_Codi.setText(String.valueOf(Codbarras));
        
        
    }
Alix

lol … agora sim fiquei sem entender nada. Mandei ele me dar um println, não é possivel ele não armazenar os dados.
E ae que está a coisa mais estranha… ele está armazenando sim. Ele printou os dados normais. @-@

Banco Conectado.
Andressa Cam 1212

Andersonrms

Pq vc cria 2 instâncias da classe Consumo? Será q não é esse o problema?

C_Porto
Alix:
Bom.. eu alterei assim (tentando usar os parametros). Mas não continua sem mostrar... Botão Pesquisar Consumo na classe Cadastro
private void BT_PesqConsumoMouseClicked(java.awt.event.MouseEvent evt) {
            if (TF_Pesquisa.getText().isEmpty()){
                JOptionPane.showMessageDialog(null, "Digite o CPF para efutar a consulta.");
            }
            
            else if(TF_Pesquisa.getText() != null){
            try {
            
            String comando = "select nome,cpf,codbarras"
                  + " FROM cliente WHERE cpf ='" +TF_Pesquisa.getText()+ "'";  
            PreparedStatement prep = con_Cadastro.conexao.prepareStatement(comando);  
            //esse retornaConexao está tratando da conexão com o bd.  
            ResultSet rs = prep.executeQuery();  
            
            if(rs.next()){
            //rs.next();
            //se for Varchar ou char usa rs.getString
            String Nome = rs.getString("nome");   
            int Cpf = rs.getInt("cpf");
            int Codbarras = rs.getInt("codbarras");
            
            Consumo valor = new Consumo();
            valor.alterText(Nome, Cpf, Codbarras);

            
            Consumo ir = new Consumo();
            ir.setVisible(true);
            dispose();
            }
            
            else{
                JOptionPane.showMessageDialog(null, "Cliente não encontrado!"); 
            }
            
            } catch (SQLException e){    
            e.printStackTrace();  

            } catch (Exception e){  
            e.printStackTrace();  
            }
            }   
        
    }
E na classe Consumo
public void alterText(String Nome, int Cpf, int Codbarras) // passa uma String    
    {    
        LB_Nom.setText(Nome);
        LB_Cpf.setText(String.valueOf(Cpf));
        LB_Codi.setText(String.valueOf(Codbarras));
        
        
    }

É como o colega Andersonrms disse, é provável que o problema esteja na instanciação de 2 Telas de Consumo, na tela de Consumo valor você altera o texto dos JLabels, mas não manda visualizar a tela, e então cria outra tela Consumo ir e sem alterar os JLabels você exibe a tela, logo não vai apresentar nada.
Ou não é isso?

Alix

Eu não tinha reparado nisso. ------------------------
kkkkk… passei um dia todo tentando ver onde eu estava errando e era algo tão simples.

Obrigada Meninos… sz

Criado 6 de maio de 2012
Ultima resposta 7 de mai. de 2012
Respostas 7
Participantes 4