e ai pessoal…estou aprendendo muito aqui no GUJ…mais ainda tenho duvidas, pois sou iniciante
estou criando um aplicativo no netbeans e gostaria de saber como setar um botão para uma outra janela. Ex:
na janela principal eu tenho o botão cadastro, clicando nesse botão ele abriria a janela do cadastro e ao terminar de cadastrar e salvar, clicando no botão Fechar, ele fecharia a janela de Cadastro e voltaria para a janela principal…eu consegui setar o botao da janela principal para abrir a janela de Cadastro, mas qual seria o codigo para fechar e foltar a janela Principal?
Isso mesmo esse metodo é legal que se voce ter uma tela que mostra os dados do cliente ao cadastra e abrir , ele ja retorna o propio dado cadastrado…
Gabriellf
Há duas maneiras de se resolver isso.
A primeira maneira é definir a janela de cadastro como um JDialog, definindo ele como modal através do método setModal(true), e definindo a propriedade de fechamento, conforme o Leandro colocou. No evento do botão “Cadastro”, da tela principal, ficaria o seguinte código:
TelaCadastrotelaCad=newTelaCadastro();telaCad.setVisible(true);//estapróximalinhasóseráexecutadaquandoateladecadastroforfechadathis.atualizarDados(); //supondo que exista um método chamado atualizarDados
Outro forma seria o usar a classe WindowAdapter. Mas, para isso, quando a tela de cadastro for aberta, a tela principal deve ser fechada. Ficando:
//construtor da tela de cadastropublicTelaCadastro(){//...//para a tela não fechar diretamente, pois o fechamento será tratado pela Adaptadorathis.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);this.addWindowListener(newAdaptadora());}//cria-se uma classe interna para a WindowAdapterprivateclassAdaptadoraextendsWindowAdapter{@OverridepublicvoidwindowClosing(WindowEvente){newTelaPrincipal().setVisible(true);TelaCadastro.this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);TelaCadastro.this.dispose();}}
Legolas
Leandro…valeu a dica…funciona que é uma maravilha…
Legolas
Gabriel…eu sempre vejo o pessoal falar aqui que é melhor fazer uma janela de cadastro em JDialog, porque , especificamente, assim é melhor…pois fiz uma janela de cadastro em jframe mesmo…e funcionou…vc poderia me explicar a diferença?
E obrigado pela dica.
Gabriellf1 like
Uma das principais diferenças, entre o JFrame e o JDialog, é o atributo modal do JDialog. Caso ele seja verdadeiro, toda janela aberta abaixo do JDialog fica inacessível, ou seja, se você tem uma tela principal, que chama a tela de cadastro, assim que a tela de cadastro for aberta, a tela principal fica inativa; o usuário poderá interagir apenas com a tela de cadastro. A partir do momento que a tela de cadastro é fechada, a tela principal volta a ficar acessível.
Nesse exemplo, assim que a instrução telaCad.setVisible(true) é executada, a tela principal fica inacessível para o usuário. Quando a tela de cadastro for fechada a instrução this.atualizarDados() é executada.
No caso do JFrame, ele não permite isso.
TEC.ER
O JDialog é bom, pois ele faz com que o usuarios nao abra varias telas enquanto esta manipulando uma, o que pode trava o sistema…