Um jFrame manipular os dados de outro jFrame

5 respostas
B

Bom pessoal, to com um probleminha que parece ser simples mais esta me atrazando um pouco.

estou com dois jFrames, um deles (JF1) exibe uma lista de produtos de um arquivo (txt) e o outro (JF2) insere produtos no arquivo (txt).

No JF1 tenho uma função que faz a leitura no arquivo e adiciona os produtos no combobox do JF1.

O que eu estava precisando era, que quando fose inserido um produto novo no JF2, o JF2 chame essa função do JF1 que adiciona os produtos em seu combobox.

o JF1 e o JF2 estão em arquivos de classes separados.

Se alguem poder dar uma luz fico agradecido… jah pesquisei bastante no google mas não encontrei nada muito exclarecedor.

Valeu

5 Respostas

renzonuccitelli

Passe uma referencia do JF1 para o JF2 e chame a função que desejar…

Diego_Silveira

Uma dica para não precisar ficar passando referências de um Frame para o outro é fazer com que as classes de Frame’s sejam singletons, ou seja:

class MyFrame1 extends JFrame {
 
   private static MyFrame1 instance = null;

   private MyFrame1() { //Private para proibir invocações externas a classe
   }

   public static MyFrame1 getInstance() {
   
       if( instance == null ) {
          instance = new MyFrame1();
       }
       return instance;
   }

   // Metodos que atualizam o conteudo dos componentes deste frame, por exemplo
   public void m1() { }
   
   public void m2() { } 

}
class MyFrame2 extends JFrame {
 

   public void someMethod() {
       
       //....

       MyFrame1.getInstance().m1();

       //....

   }   

}

Espero que ajude :slight_smile:

B

Obrigado Diego e renzo, ajudaram bastante…

só que acabei usando esse evento:

private void formWindowActivated(java.awt.event.WindowEvent evt) {
    
    FabricanteCombo5(); //metodo que atualiza o combo
    
}

Os dados são atualizados quando o foco volta para o Frame1.

Obrigadão…

com a dica do Diego ficaria melhor, só que não consegui implementar.

MyFrame1.getInstance().m1();

não ta executando esse comando, não ta fazendo nada…

renzonuccitelli

Usar o singleton ou a referência dependeria da regra de negócio. Se vc pudesse ter várias instancias de F1 e F2, então ele nao se aplicaria

Diego_Silveira

Não executa nada pq m1() é um método em branco nos exemplos que eu te dei… vc substituiria m1() por FabricanteCombo5(), entende?

MyFrame1.getInstance().FabricanteCombo5(); por exemplo.

Criado 28 de outubro de 2008
Ultima resposta 28 de out. de 2008
Respostas 5
Participantes 3