Ola galera…queria uma ajuda sobre gereciar melhor janelas no swing…
seguinte estou rodando um aplicativo em swing…ai tenho uma janela principal onde apartir desta vou chamando outras janelas…mais toda a janela nova que chamo a antiga continua aberta na tela…isso dependendo do uso esta deixando muitas janelas apertas…gostaria de saber como faço pra qndo clicar para abrir uma nova janela a janela antiga fecha-se…e mais uma coisa na janela principal gostaria de qndo clicar no “X” para fechar…ele me desse a msagem por exemplo de “DESEJA REALMENTE SAIR”…
VLW
Nota: extendendo minha janela principal do JFrame.
packageguj;importjava.awt.BorderLayout;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.SwingUtilities;publicclassExemploFecharextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){ExemploFecharthisClass=newExemploFechar();thisClass.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);// importantethisClass.setVisible(true);}});}publicExemploFechar(){super();initialize();}privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.setTitle("Exemplo");this.addWindowListener(newWindowAdapter(){// importante@OverridepublicvoidwindowClosing(WindowEvente){intret=JOptionPane.showConfirmDialog(ExemploFechar.this,"Deseja sair do programa?");if(ret==JOptionPane.YES_OPTION){System.exit(0);// cai fora}}});}privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(newBorderLayout());}returnjContentPane;}}
mymyself
vlw por essa dica assim…
agora se por exemplo na janela principal qndo clicar em um botao por exemplo ele abre outra janela(ate aki ja esta OK)…ai quero q a principal feche…??
coloco System.exit() ou não??
Eric_Yuzo
System.exit encerra toda a aplicação. Para fechar apenas o frame faça:
mymyself
brigado…
e por exemplo…coloco frame.dispose(); na principal ai ela fecha qndo chamo a outra janela…mais qndo fechar a outra janela essa janela volta…??
ou tenho q fazer algum comando na outra janela pra poder voltar a janela principal???
VLW
Eric_Yuzo
Se a janela precisa voltar, você deve apenas ocultar a janela.
frame.setVisible(false); //oculta a janela
frame.setVisible(true); //exibe a janela
Você precisa abrir uma janela para obter alguma entrada do usuário e depois voltar para principal? Um JDialog não seria melhor do que dois JFrames?
E
entanglement
Eu costumo ter apenas e tão somente 1 JFrame nas minhas aplicações. As outras telas costumam resolver-se com JDialogs ou então com JTabbedPanes.
O próprio JOptionPane é uma classe que cria JDialogs customizados (veja o método “createDialog”).