Comunicação entre janelas

4 respostas
androidelp

Bom dia,

Estava tentando chegar no mesmo resultado que o ViniGodoy mostrou neste tutorial [url]http://www.guj.com.br/java/235333-meu-primeiro-tutorial-passando-valores-para-outro-jframe[/url]

Porém não estou conseguindo introduzir o código que ele criou.

Segue problema:

Tenho duas janelas, a primeira se chama exibir e a segunda atualizar, a janela "exibir" exibi informações de um banco, quando o cliente clicar no botão atualizar ele abre o segundo formulario e exibi as informações em textfield para que o usuário final possa atualizar.

No link acima ViniGodoy mostra uma solução usando interface e o listener porém na minha classe principal que o atualizar já possui um extends javax.swing.JFrame e parei exatamente ai onde não consigo extender para a instancia criada.

segue código na janela exibir (quem irá receber o valor):

// código do ViniGodoy

public interface JanelaSecundaria {
    
        void textoDefinido(String texto);
        
    } 
    
    //criei a instancia listener
     private JanelaSecundaria listener = null;
     
     
     //metodo que ira definir o listener
     public void setListener (JanelaSecundaria listener) {
     
         this.listener = listener; 
     
     }

// mesma janela mas agora uso o metodo textoDefinido para receber o valor do meu banco atravez de um combobox

private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                            

    
    Atualizar at = new Atualizar();
    
    conexao cn = new conexao();
    
    cn.conectar();
    
    if(evt.getStateChange() == ItemEvent.SELECTED){
    
     String ValorCombo =  (String)jComboBox1.getSelectedItem(); 
           
     
      ResultSet rs = null;
            try {
                
                cn.instrucao = cn.conexao.createStatement();
                rs = cn.instrucao.executeQuery( "Select * from registro where Cliente = '"+ValorCombo+"'" );
            
                while(rs.next())
                         {
                             
                             lbNome.setText(rs.getString("Cliente"));
                             lbTHoras.setText(rs.getString("total_horas"));
                             lbHU.setText(rs.getString("horas_usadas"));
                             lbObs.setText(rs.getString("obs"));
                       
                        
                         }

/*
*******************
Metodo usado aqui abaixo
***************

*/
                
                listener.textoDefinido(ValorCombo);
                
               
            
            rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(Exibir.class.getName()).log(Level.SEVERE, null, ex);
            }

     
     
      
  
    }else{
        
        //não fazer nada
    
    }
   
     
}

//Janela Atualizar (que recebe os dados)
// parei exatamente aqui, não consigo inserir o código restante do Godoy pois a minha classe Atualizar está extendida pois utilizei o swing para criação
// e não sei como indroduzir o código
// usei um evento formWindowOpened para ajudar no recebimento dos valores
// não coloquei todo o código pois isso é gerado pelo swing

public class Atualizar extends javax.swing.JFrame {
    
  
    

    /** Creates new form Atualizar */
    public Atualizar () {
        initComponents();
        
         
    }


private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
// usei um windowOpened para ajudar no recebimento
    
   
    
}

4 Respostas

Vyccus

Se eu entendi bem, você está tentando estender essa sua interface que “transporta” os valores para sua outra janela? Assim sendo, como você já estendeu o JFrame e o Java não tem herança multipla, você não consegue faze-lo. É isso?

Se for esse o problema, no caso não daria certo nem se você não estendesse o JFrame, pois uma classe não estende uma interface e sim implementa. Use o “implements” para isso.

Caso eu tenha entendido errado, peço desculpas.

Abraço

androidelp

Sim a idéia é transportar valores de uma janela para outra, tentei usar o exemplo usando interface mas não consegui colocá-la no meu código.

Acredita que conseguirei com implements?

Existe uma forma mais fácil de fazer isso? sem dar uma volta ao mundo? :?: :?: :?:

Agradeço a resposta rápida.

Vyccus

Na verdade eu vi o exemplo do Vini e até deixei uma mensagem lá relatando o possivel erro de digitação que ele cometeu estendendo a interface(isso no java não é possível, somente interfaces estendem interfaces), o método que ele usa é muito bom e creio que eu também usaria assim.

Pode implementa-la e seguir o resto do exemplo que vai funcionar do jeito que você quer.

Abraço

ViniGodoy

A forma mais rápida é com JDialog:

Criado 14 de junho de 2012
Ultima resposta 14 de jun. de 2012
Respostas 4
Participantes 3