Boa tarde, pessoal, tenhu um JDialog com algumas JTextField e tambem um JButton que abre um outro JDialog que tem uma JTable populada com registros do banco.
Gostaria de saber como faço para que quando eu selecionar um registro da JTable e der Ok ao fechar esse JDialog jogar os dados para os JtextField contidos no outro JDialog.
Exporte os dados selecionados no segundo formulário através de métodos getXxxx(). Assim, o primeiro formulário poderá ter acesso estruturado a eles;
Exiba o segundo formulário de forma modal. Assim, quando você chamar setVisible(true) no segundo formulário a partir do primeiro formulário, a chamada só vai retornar quando o segundo formulário for fechado;
Após o fechamento do segundo formulário, use os métodos getXxxx() dele para que o primeiro formulário capture os dados que devem ser copiados.
Um método um pouco mais sofisticado para fazer o que você precisa é usar Event Listeners (o famoso padrão “ouvinte”). O link abaixo explica detalhadamente o conceito, aplicado ao framework Swing:
Faça o que instruí no primeiro formulário, você provavelmente vai fazer referência a uma rotina do primeiro formulário no trecho comentado onde se lê “seu código aqui”.
Você está no caminho certo. Percebi que você seta todas as informações na classe Cliente.
Agora você pode encapsular essa classe criando os metodos get e set
[code]
/**
* @return the Cliente
*/
public Cliente getCliente() {
return cliente;
}
/**
* @param cliente the Cliente to set
*/
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}[/code]
Logo embaixo do seu for onde você passa as informações da tabela para a classe, você pode armazenar sua classe Cliente no set
setCliente(cliente);
No seu primeiro JDialog, é só recuperar as informações utilizando o get. Provavelmente seu código deve estar da seguinte maneira
SegundoJDialog segundoJDialog = new SegundoJDialog(parent, true);
segundoJDialog.setVisible(true);
//Nessa parte do código, você consegue recuperar as informações do segundo JDialog após o fechamento do mesmo
//Então é só recuperar sua classe Cliente com todas as informações
Cliente cliente = segundoJDialog.getCliente();
cliente.getCodigo().........
Não testei os códigos mencionados acima, mas o caminho é esse. Espero ter ajudado.
então amigo assim deu certo resolveu meu problema… mais essa é a forma correta de fazer isso?? queria tentar utilizando a outra forma que tu disse usando o ActionListener… se vc puder me ajudar nisso tb eu agradeço
Então amigo, não é questão de ser correto ou não, e sim de opção.
Eu particularmente sempre fiz dessa forma.
Posso estar totalmente errado, mas acho que usando o Listener da maneira que o roger_rf mencionou, você terá que encapsular todos os campos do seu segundo jdialog para usar no primeiro. Percebe que já é feito isso com o botão ( segunodForm.getBotaoOK() )
segundoFormulario.getBotaoOK().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Seu código aqui
}
});
Da maneira que eu faço, você faz tudo isso no seu próprio segundo JDialog.
Novamente, não sei se é o mais correto ou não, porém acredito que seja o mais fácil