Duvidas Com Forms

Pessoal sou novo aqui e no Java. Eu tenho um sistema simples, cadastro de clientes e outro Frame de pesquisar clientes.

Quando abro o frame de pesquisa os clientes são carregados em um table, quado seleciono o cliente e clico em OK eu passo o código do cliente(get e set) para o frame de clientes. Eu só consigo carregar os textFields se eu clico num botão para carregar. Queria deixar no construtor do Frame Clientes para que ao selecionar o cliente e clicar no OK já carregar todos os textFields automaticamente.

ajuda ai pessoal obrigado!!!

Amigo, teria como postar o código ?

Opa, tae.

//FRAME DE PESQUISA DE ALUNOS
//passa para o frame de Alunos o código do aluno selecionada na jTable
telaAluno.setRetornaCodPesquisa(Integer.parseInt(tabelaAlunosPesquisar.getValueAt(tabelaAlunosPesquisar.getSelectedRow(), 0).toString()));
//FRAME DE ALUNOS
//metodo que carrega os jtextFields
private void carregaCampos(ArrayList<Aluno> dados) {
        for (int z = 0; z < dados.size(); z++) {
            aluno = dados.get(z);
            txtAlunoCod.setText(String.valueOf(aluno.getCod_aluno()));
            txtAlunoNome.setText(aluno.getNome_aluno());
            txtFormatAlunoNasc.setText(aluno.getDt_nascimento());
            txtAlunoApelido.setText(aluno.getApelido());
            txtAlunoBairro.setText(aluno.getBairro());
            txtAlunoCidade.setText(aluno.getCidade());
            txtAlunoComplemento.setText(aluno.getComplemento());
            txtAlunoContPrinc.setText(aluno.getContato());
            txtAlunoEmail.setText(aluno.getEmail());
            txtAlunoEmailMae.setText(aluno.getEmail_mae());
            txtAlunoEmailPai.setText(aluno.getEmail_pai());
            txtAlunoEndereco.setText(aluno.getEndereco());
            txtAlunoMae.setText(aluno.getNome_mae());
            txtAlunoNumcasa.setText(aluno.getNum_casa());
            txtAlunoObs.setText(aluno.getObs());
            txtAlunoPai.setText(aluno.getNome_pai());
            txtFormatAlunoCep.setText(aluno.getCep());
            txtFormatAlunoCpf.setText(aluno.getCpf());
            txtFormatAlunoDtCadast.setText(aluno.getDt_cadastro());
            txtFormatAlunoRg.setText(aluno.getRg());
            txtFormatNum1.setText(aluno.getFone1());
            txtFormatNum2.setText(aluno.getFone2());
            txtFormatNum3.setText(aluno.getFone3());
            txtFormatNum4.setText(aluno.getFone_pais1());
            txtFormatNum5.setText(aluno.getFone_pais2());
            txtFormatNum6.setText(aluno.getFone_pais3());
            combAlunoTipo1.setSelectedItem(aluno.getFone_pais3());
            combAlunoTipo2.setSelectedItem(aluno.getFone_pais3());
            combAlunoTipo3.setSelectedItem(aluno.getFone_pais3());
            combAlunoTipoTel4.setSelectedItem(aluno.getFone_pais3());
            combAlunoTipo5.setSelectedItem(aluno.getFone_pais3());
            combAlunoTipo6.setSelectedItem(aluno.getFone_pais3());

        }
    }

    //metodo que seta os textfields 
   //este metodo é que deve ser invocado para carregar os campos. Porem se chamo ele no construtor nada acontece.
  //só carrega os campos quando "forço" a chamada dele. Por exemplo, este metodo esta sendo chamado atraves de uma acão de um botão qualquer. Ao inves do botao queria que carrega-se automaticamente.
    private void filtrarDadosAlunos() {
        ArrayList<Aluno> filtro = new ArrayList<Aluno>();

        for (int i = 0; i < alunos.size(); i++) {
            if (String.valueOf(alunos.get(i).getCod_aluno()).equals(String.valueOf(getRetornaCodPesquisa()))) {
                filtro.add(alunos.get(i));
            }

      
            carregaCampos(filtro);
        }
    }

Rodrigo,

Não vi o restante do seu código.

Se você estiver usando um construtor sem argumentos para o frame de alunos, sugiro que você utilize um construtor que recebe o código do aluno. Aí você não precisaria dos métodos setRetornaCodPesquisa() nem getRetornaCodPesquisa().

Não entendi bem por que o carregaCampos recebe um ArrayList. Ele vai carregar somente um aluno? Não acha melhor que ele receba um objeto Aluno?

Pela minha sugestão ficaria mais ou menos assim (estou considerando que o frame de alunos se chama TelaAluno e o código do aluno é um Integer):

[code]public TelaAluno(Integer codigoAluno){
Aluno aluno;

   for (int i = 0; i < alunos.size(); i++) {  
       if (alunos.get(i).getCod_aluno().equals(codigoAluno) {
           aluno = alunos.get(i);
           carregarCampos(aluno); 
       }
   }

}

private void carregaCampos(Aluno aluno) {
txtAlunoCod.setText(String.valueOf(aluno.getCod_aluno()));
txtAlunoNome.setText(aluno.getNome_aluno());

  (...)

}[/code]

Estou imaginando que o código do aluno é um Integer, por isso estou usando equals(). Se for int ou long você deve usar ==.

Uma outra solução é o construtor TelaAluno() receber um objeto Aluno. Neste caso antes de chamar o construtor você já deve selecionar o aluno na lista para passar para o construtor.

Outra alternativa é a seguinte: ao invés de procurar o aluno numa lista, você poderia ter um método que retornasse o aluno pelo código.

Espero ter ajudado.

al.barbosa, obrigado pela ajuda.
Já resolvi com o JDialog.

Agora tenho outras duvidas com Calendar. Vou abrir outro topico.

obrigado!