eu tenho uma janela de cadastro e outra de consulta, qdo clico no botao consultar da tela de cadastro ele chama a tela de consulta onde irão aparecer todos os registros da minha tabela em um grid, qdo eu clico em algum registro na jtable gostaria que fosse fechada a janela de consulta e o codigo do registro fosse passado para a tela de cadastro, está tudo ok, a unica coisa que eu não estou conseguindo fazer eh passar o parametro entre as janelas
se possível gostaria que alguem me enviasse um exemplo de como implementar a passagem de parametro
Bem, pra fazer isso que vc quer vc tem diversas maneiras. Duas me vieram a cabeça:
:arrow: Passar como parametro para a janela filha uma referencia da janela pai, e na janela filha vc altera o valor do campo na janela pai e fecha a filha:
// para abrir a janela filha
abrirJanelaConsulta(this);
// e na janela consulta, apos selecionar o cara:
windowPai.prepareQuery(valorChave1);
dispose();
:arrow: Esperar algum retorno da janela filha, desde que a mesma seja modal, claro.
// na janela pai
JanelaConsulta c = new JanelaConsulta();
c.setModal(true);
c.show();
// ele vai esperar a consulta fechar para continuar
prepareQuery(c.getCodigoChave());
seria algo assim. Nao considere nenhum codigo aqui como valido, foram apenas exemplos.
Caro brlima, algumas coisas que eu fiquei meio perdido, ao setar a jenela com o setModal(true) a minha ide informou um erro, eu tenho que importar alguma biblioteca específica???, no caso eu quero retornar uma variavel, pelo que eu entendi vc esta retornando uma modulo da classe “c”, eh isso mesmo???, sou iniciante e peço um pouco de paciencia.
Ok. para setar para modal ( setModal() ) sua janela deve extender JDialog.
JDialog é parecido com JFrame, portanto é facil mudar de uma pra outro.
A diferencao do setModal é que ele espera a sua janela fechar para continuar o codigo, logo, enquando vc tiver com a janela filha aberta, vc pode alterar valores dela.
Quando vc fechar a filha e ele voltar no codigo do pai, vc tem uma referencia para a janela filha ( que vc acabu de mostrar, chamando o método show() ) e com isso vc consegue acessar as variaveis ( campos, textefiels, etc ) que vc mexeu nos valores.
Preste atenção que não estamos “retornando” nada. Estamos acessando os valores do objeto.
[quote]A diferencao do setModal é que ele espera a sua janela fechar para continuar o codigo, logo, enquando vc tiver com a janela filha aberta, vc pode alterar valores dela.
Quando vc fechar a filha e ele voltar no codigo do pai, vc tem uma referencia para a janela filha ( que vc acabu de mostrar, chamando o método show() ) e com isso vc consegue acessar as variaveis ( campos, textefiels, etc ) que vc mexeu nos valores.
Preste atenção que não estamos “retornando” nada. Estamos acessando os valores do objeto. [/quote]
Sei que a dúvida é do colega, mas fiquei com uma dúvida nesse help que vc deu… qdo a janela filha for fechada ainda teremos a variavel “c” (no exemplo que vc deu) ?? Ela não fica nula qdo fechamos a janela filha !?
Pelo que entendi o objeto ainda vai existir… certo, ai como eu faria para ele sumir da memória, ou melhor, destruir o objeto da memória depois de pegar o que eu preciso ???
Não. essa variavel faz referencia a janela que foi fechada. Essa janela não esta mais visivel na tela, mas ainda continua em memoria, pois o garbage colector ainda não pode limpa-la: temos uma referencia a variavel c. Não estando na tela, já tem bem menos memoria consumida, mas ainda tem valores na memoria. Resumindo: ela não morreu
[quote=fbanin]
Pelo que entendi o objeto ainda vai existir… certo, ai como eu faria para ele sumir da memória, ou melhor, destruir o objeto da memória depois de pegar o que eu preciso ???[/quote]
Vc precisa avisa o GC que ele deve remove-la da memoria, ou seja, vc deve limpar as referencias de varaiveis setando pra nulo.
[quote=aeamorim]estou usando o netbeans e quando faço a chamada para uma JDialog ele me traz como erro,
TelaConsulta tc = new TelaConsulta();
da o seguinte erro
“Cannot find symbol”[/quote]
TelaConsulta é uma classe sua ? Ela extende JDialog? Vc tá importando os pacotes certo pra achar essa classe ? Tem certeza que é nessa linha ? :mrgreen: