Isso me mostra a Janela2 (Localizar Clientes). Essa Janela2 basicamente tem uma JTable com os clientes do banco de dados. Seleciono um cliente (pego a linha selecionada), pressiono o botão Carregar e…
1 - Queria que a Janela2 fosse fechada e
2 - Que o cliente selecionado fosse carregado no JTextField da Janela1.
Agradeço de antemão qualquer ajuda. Caso exista uma maneira melhor de fazer isso, estou aberto a sugestões!
2) Pelo que eu entendi você quer muda o texto JTextField, porque você não lê as informações
do cliente em uma ou mais variável(is) String e faz assim:JTextField.setText(variavelCliente);
Espero ter ajudado!!
J
joellazzari
Olá Matchola, obrigado pela resposta.
Quanto ao item 1
Janela2.setVisible(false);
OK, entendi
Agora quanto ao item 2
Eu pego a linha selecionada (e posso colocar nome do cliente numa variável, isso na Janela2)
Da maneira que você sugeriu, com o comando
JTextField.setText(variavelCliente);
faria que o texto da variavelCliente da Janela2 fosse para o JTextField da Janela1. Isso está correto?
Não tenho que especificar a Janela/JTextField destino? Esse comando não seria somente para a mesma janela?
phpinheiro
joellazzari,
eu vejo duas maneiras de se fazer o que vc mencionou.
A primeira maneira é a famosa POG: passar como argumento pra janela 2 o objeto do seu textfield e fazer um setText lá.
A segunda é a melhor e mais correta, ao meu ver: Obsevable.
Dê uma pesquisada nos tutoriais do GUJ, tem um tutorial ótimo de Observer e Observable.
importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;publicclassexemploextendsJFrameimplementsActionListener{JButtonbotaoConfirma=newJButton("Confirma");//componete janela 1JTextFieldnomeCliente=newJTextField(8);//componete janela 1staticStringgetNomeCliente;//pega o q esta no JTextField nomeClienteJFramejanela2=newJFrame("janela2");//nova janelaJTextFieldsetNomeCliente=newJTextField(8);//recebe o q esta getNomeClientepublicexemplo(){super("janela1");add(botaoConfirma,BorderLayout.EAST);add(nomeCliente,BorderLayout.WEST);pack();setVisible(true);botaoConfirma.addActionListener(this);}publicvoidactionPerformed(ActionEventarg0){getNomeCliente=nomeCliente.getText();setVisible(false);janela2.add(setNomeCliente);setNomeCliente.setText(getNomeCliente);janela2.pack();janela2.setVisible(true);}publicstaticvoidmain(String[]args){newexemplo();}}
Passar como argumento pra janela 2 (não seria da 2 pra 1?) o objeto do seu textfield e fazer um setText lá.
Isso não me assustou muito, devo procurar uma solução em cima dessa idéia.
Obsevable:
Vou procurar estudar sobre Obsevable, pois me pareceu extremamente útil (antes tenho que entender outros pontos em OO).
Matchola
Obrigado pelo código, vai me ajudar muito. Vou separar isso em duas classes:
public class TelaPrincipal {
...
//aqui tenho o JTextField + JButton
...
}
public class LocalizarClientes {
...
//aqui carrego minha JTable (com os clientes do banco de dados)
//seleciono o cliente (pego a linha selecionada)
//e envio para o JTextField da TelaPrincipal
...
}
Vou procurar entender exatamente como funciona sua classe exemplo e tentar adaptar na solução do meu problema.
Quando chegar no resultado desejado, coloco o código aqui.