Como trocar informações entre jFrames

Meu problema eh o seguinte…

Fiz um jFrame para cadastrar cliente, um outro para vendas e outro para pesquisar o clientes…

minha duvida eh a seguinte como fazer para trocar informações entre estes jFrames…

tipo:

quando eu chamar o jFrame de pesquisa a partir do cadastro quero que ele me retorne o cliente e ja preencha os campos nome, cpf, endereco do cliente…
ja se eu chamar pesquisa a partir de vendas quero somente o cpf… como fazer isso!!!

Crie um argumento no construtor da sua janela que recebe um objeto do tipo que ela representa, e depois preencha os componentes
com os atributos desse objeto.

Ex:

public JFramePesquisa( Cliente cliente) {

   initComponentes(); // inicializa os componentes visuais

   this.txtNome = cliente.getNome();
   this.txtTelefone = cliente.getTelefone();

}

Mas isso é ruim. Ao invés de pensar na comunicação entre Janelas, tente pensar na comunicação entre objetos.
Procure aqui no forum sobre MVC

sim sim… mas tipo

nao tem como a jFrame retornar um cliente para o cadastro poder utiliza-lo?!

Ué… pq nao?

no JFramePesquisa…


public Cliente getCliente() {

   return this.cliente;

}

assumindo que vc tem uma variavel de instancia “cliente” no seu frame de pesquisa

eu queria que ele retornasse igual aqueles JOptionPane…

tipo…
vc coloca JOptionPane.showConfirmDialog…

dai vc clica lah num botao e ele retorna um valor… com um jFrame ou outra janela nao teria como eu fazer isso e retornar o cliente que eu escolhi?

é como eu te falei… se sua janela tem um objeto cliente, vc cria o método pra retornar…
suponhamos que a sua tela de pesquisa seja um JDialog ( fica melhor que frame ):

JDialogPesquisaCliente dialogPesquisa = new JDialogPesquisaCleinte();
dialog.setVisible( true );

// Se seu Dialog estiver como modal (setModal(true)), a execução pára aqui e so continua qdo o Dialog fechar
// Qdo o dialog fechar, a tela vai estar invisivel mas o objeto dialogPesquisa continua la e tendo o objeto Cliente;

Cliente cliente = dialogPesquisa.getCliente();

// faz o que quiser com cliente

ah entendi… entao mudarei para um jDialog…

valeu

consegui…

criei um metodo estatico que retorna um cliente…

tipo…

quando vc chama, esse metodo ele cria um jDialog e retorna um Cliente…

fiz assim…

public static Cliente pesquisar(JFrame frame) {
    JDPesquisar pesquisar = new JDPesquisar(frame,true);
    pesquisar.setVisible(true);
    return cliente; // q seria um atributo estatico
}

isto eh uma maneira correta ou nao eh recomendado