O idela seria bolar uma arquitetura onde as janelas só capturam entradas (IN) e mostram saídas (OUT), todo o processamento disso ai deveria ficar a cargo de outra camada…Dê uma olhada em MVC…Se você tivesse um controlador abaixo das janelas, elas poderiam usar ele pra fazer essa “ponte”…
Mas, já que você não tem isso…Vejo duas abordagens:
1-Cria métodos “static” na classe que vai receber o objeto, assim vc chama os métodos da classe e não do objeto, já que na outra janela vc não vai ter acesso a um objeto da janela pai…Mas isso me cheira um pouco a gambiarra…Porém funciona, eu mesmo usei muito isso no início da minha vida Java…
<código janela pai>
…
public class JanelaPai extends JFrame
{
…
public static void setObjetoSelecionado(Objeto objeto)
{
//Aqui vc pega as propriedades do objeto e as mostra nos componentes que tiver
}
…
}
</código janela pai>
<código janela filho>
…
public class JanelaFilho extends JFrame
{
…
public void selecionaObjeto(Objeto objeto)
{
//Depois de obter o objeto
JanelaPai.setObjetoSelecionado(objeto);
//Pronto a janela pai recebeu o objeto
}
…
}
</código janela filho>
2-Passar a instância da Janela pai na criação da outra janela, ai, nesta outra janela, qdo o objeto for selecionado/criado, vc tem acesso ao objeto da classe pai para chamar um método e atualizar os valores…
<código janela pai>
…
public class JanelaPai extends JFrame
{
…
public void chamaJanelaFilho()
{
JanelaFilho janela = new JanelaFilho(this);
}
…
public void setObjetoSelecionado(Objeto objeto)
{
//Aqui vc pega as propriedades do objeto e as mostra nos componentes que tiver
}
…
}
</código janela pai>
<código janela filho>
…
public class JanelaFilho extends JFrame
{
private JanelaPai janelaPai;
…
public JanelaFilho(JanelaPai janela)//construtor
{
this.janela = janela;
}
…
public void selecionaObjeto(Objeto objeto)
{
//Depois de obter o objeto
janela.setObjetoSelecionado(objeto);
//Pronto a janela pai recebeu o objeto
}
…
}
</código janela filho>
PS: Observe no código a diferença entre chamar o método estático da classe no exemplo 1, e chamar o método do objeto no exemplo 2.
Na minha opinião, os dois métodos são “estranhos”, vc deveria deixar essa manipulação toda de objetos para outra classe…