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!