Comunicação entre janelas

Bom dia,

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

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

[code]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; 
 
 }[/code]

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

[code]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

}

} [/code]

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

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

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.

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

A forma mais rápida é com JDialog: