Bom dia,estou enroscado em um parte de uma aplicação minha.Tenho um frame que realizará uma venda,e o que queria era o seguinte,ao clicar em um botão ele chamasse a tela de busca do cadastro de cliente,para que o usuário pudesse selecionar o cliente(isso faço normalmente),e clicasse em um novo botão que pudesse carregar o nome desse cliente na tela da venda. O meu problema está nessa parte de transferir de um frame para outro o conteúdo do textfield. Não sei como fazer isso,pesquisei em alguns foruns aqui mesmo do guj,encontrei material ensinando a fazer com um getInstance() ,mas não funcionou. E não sei nem que logica usaria para resolver essa operação.
Se você é novato, escreva sua aplicação de forma que ela tenha apenas um JFrame, e todas as outras telas sejam JDialogs modais. Isso torna sua aplicação muito mais fácil de controlar que uma que tem vários JFrames (como você deve saber, não existe “JFrame modal”).
A tela que deve ser preenchida quando for ativada é na verdade uma forma de visualizar e editar um objeto da classe Cliente (ou Venda, ou sei lá qual for), certo?
Então você pode criar um método nesse JDialog que receba um objeto dessa classe e que não seja só um simples setter, mas também já preencha os campos necessários. Por exemplo, em vez de termos um método setCliente que seja só assim:
Uma coisa muito boa é você nunca botar um “setVisible” no construtor de uma classe derivada de JFrame ou JDialog. Em vez disso, você constrói o objeto como costumeiro, passa os parâmetros adequados (por exemplo, usando um método “setCliente”), e aí dá o setVisible. Uma vez que o diálogo tenha retornado, você pode ler os valores que foram preenchidos no formulário com um método adequado (como getCliente).
Note que setCliente e getCliente não são métodos do formulário que chama o outro formulário, e sim do formulário que será visualizado e onde você irá preencher ou capturar os dados.
[quote=entanglement]1) Se você é novato, escreva sua aplicação de forma que ela tenha apenas um JFrame, e todas as outras telas sejam JDialogs modais. Isso torna sua aplicação muito mais fácil de controlar que uma que tem vários JFrames (como você deve saber, não existe “JFrame modal”).
[/quote]
Muito bem eu entendi,acredito que dessa forma resolverei mais fácil o problema. Mas primeiramente,quantos aos frames que tenho eu consigo alterar para JDialog,ou terei que refazer?
Consegui fazer o que eu queria,mas uma vez deu certo! Muito obrigado!!! Porém o que está acontecendo agora é o seguinte: Eu quero trazer nessa tela de venda o cliente e o produto,então estou chamando a tela de busca referente aos dois,e importando a informação que quero nessa tela de venda. Consegui fazer para o cliente, preencheu a informação corretamente, mas quando chega no produto para preencher a informação,me abre uma nova tela de venda por causa do setVisible(true). Todo vez que clico no botão ele traz uma nova janela,me fazendo nunca conseguir preencher os dois campos.E se tiro esse setVisible() ele não preenche o textfield.
Fiz conforme voce falou criei o metodo set e na hora de chamar estou fazendo assim
VendaDialog vd = new VendaDialog();
vd.setCliente();
vd.setVisible(true);
dispose();
Tentei criar um metodo para verificar se a janela já estava aberta e não abrir novamente,mas não funciou!
Ficando da seguinte maneira:
public VendaDialog venda = null;
public void verificaJanela{
if(venda == null){
venda = new VendaDialog();
}
venda.setVisible();
Porem continua abrindo varias janelas,e removi o setVisible do botão que importava o nome para o dialog da venda, e coloquei esse metodo no lugar,o que aconteceu foi que ele parou de preencheu o textfield,apenas abriu uma nova janela.