tenho uma coisa a dizer… o forum realmente é fera…
sempre consigo resolver minhas duvias aq… realmente agradeço…
e como sempre estou com mais uma duvida…
é o seguinte…
quando o usuario clica no x do rpograma para encerrar o programa eu qero que aparessa um OptionPane dizendo “clique no botao sair da area de trabalho do sistema para sair” e volte para o programa…
por exemplo
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(null, "clique no botao sair da area de trabalho do sistema para sair");
}
});
esse codigo faz quase tudo… mas quando o usuario clica em OK inves do programa voltar a tela principal ele fexa…
tem como inves dele fexar voltar para o programa??
JOptionPane.showMessageDialog(null,"clique no botao sair da area de trabalho do sistema para sair");
}
});
vo pode terntar depois do JOption…um e.wait();
isso vai gerar uma excessao, pq nao consegue deixar a thread esperando,mas nao compromente o sistema, uma vez que o cara que clicou no X ele quer fechar, entao depois do aviso ele vai fechar pela area de trabalho.
fiz o teste aqui e funcionou…
SEI…SEI PESSOAL ta soando gambiarra…mas…
W
wes_00
mais entaum como q vai ficar o comando??? com esse e.wait()??
vlw …
abelgomes
addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){JOptionPane.showMessageDialog(null,"clique no botao sair da area de trabalho do sistema para sair");try{e.wait();}catch(excessaoe){}}});
sendo que essa execessao eu nao lembro o nome…mas qaundo vc colocar o e(que é do seu evento).wait(); o ide vai lhe mostrar qual excessao usar…
W
wes_00
deu cara.. colokei tudu sertim.. mais ainda a tela principal continua fexando... =(
da uma olhada no meu codigo aew..
addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){JOptionPane.showMessageDialog(null,"clique no botao sair da area de trabalho do sistema para sair");try{e.wait();}catch(Exceptiona){}}});
aachu q eu naum estou entendendo muito bem... =(... eu to usando o JCreator c issu simplificar..
vlw
abelgomes
rapaz…esse evento ta na sua tela principal??? estranho pq eu fiz um tela aqui no netbeans e funcionou…
olha só…:
privatevoidformWindowClosing(java.awt.event.WindowEventevt){JOptionPane.showMessageDialog(null,"No botao para fechar");try{
evt.wait();}catch(InterruptedExceptionex){
ex.printStackTrace();}
}
funcionou perfeitamente…
W
wes_00
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassTelaPrincipalextendsJFrameimplementsActionListener{privateJMenuBarjmPrincipal=newJMenuBar();privateJMenujmCadastro=newJMenu("Cadastros");privateJMenujmListagen=newJMenu("Listagens");privateJMenujmSobre=newJMenu("Sobre..");privateJMenuItemjmCadAgenda=newJMenuItem("Agendamento");// itens que vao dentro dos menus que estao dentro do principalprivateJMenuItemjmCadCliente=newJMenuItem("Cliente");privateJMenuItemjmCadCidade=newJMenuItem("Cidade");privateJMenuItemjmCadEstado=newJMenuItem("Estado");privateJMenuItemjmCadProduto=newJMenuItem("Produto");privateJMenuItemjmCadServico=newJMenuItem("Servico");privateJMenuItemjmListAgenda=newJMenuItem("Agendamento");// itens que vao dentro dos menus que estao dentro do principalprivateJMenuItemjmListCliente=newJMenuItem("Cliente");privateJMenuItemjmSobreSistema=newJMenuItem("Alunos");// itens que vao dentro dos menus que estao dentro do principalprivateJMenuItemjmSobreAluno=newJMenuItem("Sistema");ImageIconimage1=newImageIcon("user1.png");ImageIconimage2=newImageIcon("horario.png");ImageIconimage3=newImageIcon("sairprinci.png");ImageIconimage4=newImageIcon("agend.png");privateJButtonbCliente=newJButton(image1);privateJButtonbHora=newJButton(image2);privateJButtonbSair=newJButton(image3);privateJButtonbAgenda=newJButton(image4);privateContainermyPainel=getContentPane();publicJPanelmyJPanel=newJPanel();publicTelaPrincipal(){myPainel.setLayout(newBorderLayout());myPainel.add("East",myJPanel);getContentPane().setLayout(newBorderLayout());JPanelpainel=newJPanel();getContentPane().add("East",painel);painel.setLayout(newGridLayout(4,1,1,1));//--------------------colocando os textos de ajuda ---------------------//opçoes dos menu barjmCadastro.setToolTipText("Click para Exibir as Opções de Cadastro");jmListagen.setToolTipText("Click para Exibir as Opções de Listagens");jmSobre.setToolTipText("Click para Obter Informações");//opçoes dos itens do menu bar cadastrojmCadCliente.setToolTipText("Click para Cadastrar um Cliente");jmCadAgenda.setToolTipText("Click para Cadastrar um Agendamento");jmCadCidade.setToolTipText("Click para Cadastrar uma Cidade");jmCadEstado.setToolTipText("Click para Cadastrar um Estado");jmCadProduto.setToolTipText("Click para Cadastrar um Produto");jmCadServico.setToolTipText("Click para Cadastrar um Serviço");//opçoes dos itens do menu bar listagensjmListCliente.setToolTipText("Click para Listar um Cliente");jmListAgenda.setToolTipText("Click para Listar um Agendamento");//opçoes dos itens do menu bar SobrejmSobreSistema.setToolTipText("Click para Obter Informações Sobre os Alunos que Desenvolveram o Sistema");jmSobreAluno.setToolTipText("Click para Obter Informações Sobre o Sistema");//botoes da pagina principalbCliente.setToolTipText("Click para cadastrar um Cliente");//cria a caixa de dialogo; bAgenda.setToolTipText("Click para cadastrar um Agendamento");bHora.setToolTipText("Click para visualizar os horarios disponiveis");bSair.setToolTipText("Click para sair do programa");painel.add(bCliente);painel.add(bAgenda);painel.add(bHora);painel.add(bSair);getContentPane().add(jdPane);jmPrincipal.add(jmCadastro);// escreve cadastro no menujmCadastro.add(jmCadAgenda);// cadastro escreve cadastro clientejmCadastro.add(jmCadCliente);// cadastro escreve cadastro fornecedorjmCadastro.add(jmCadCidade);jmCadastro.add(jmCadEstado);jmCadastro.add(jmCadProduto);jmCadastro.add(jmCadServico);jmPrincipal.add(jmListagen);jmListagen.add(jmListAgenda);jmListagen.add(jmListCliente);jmPrincipal.add(jmSobre);jmSobre.add(jmSobreAluno);jmSobre.add(jmSobreSistema);setJMenuBar(jmPrincipal);getContentPane().add(jdPane);jdPane.add(data);jdPane.add(hora);data.setBounds(20,50,600,500);hora.setBounds(20,20,600,500);bCliente.addActionListener(this);bAgenda.addActionListener(this);bHora.addActionListener(this);bSair.addActionListener(this);setSize(800,600);jmCadCliente.addActionListener(this);// para os itens cadCliente estao como ouvintes a propria classe jmCadProduto.addActionListener(this);// para os itens cadFornecedor estao como ouvintes a propria classe jmCadServico.addActionListener(this);jmCadAgenda.addActionListener(this);jmCadCidade.addActionListener(this);jmCadEstado.addActionListener(this);jmListAgenda.addActionListener(this);jmListCliente.addActionListener(this);jmSobreAluno.addActionListener(this);jmSobreSistema.addActionListener(this);//------------------atalhos-------------------------bHora.setMnemonic('h');//--------------------------------------------------//--------------------------- evento para tratar o fechamento pelo x da janela principal-----------addWindowListener(newWindowAdapter(){formWindowClosing(java.awt.event.WindowEventevt){JOptionPane.showMessageDialog(null,"No botao para fechar");try{evt.wait();}catch(InterruptedExceptionex){ex.printStackTrace();}}});//public void windowClosing(WindowEvent e) { //JOptionPane.showMessageDialog(null, "clique no botao sair da area de trabalho do sistema para sair"); //try{ // e.wait(); //}//catch(Exception a){ //} //} //});setVisible(true);this.setExtendedState(JFrame.MAXIMIZED_BOTH);}}}
éssa é a tela principal..
e esse é o voi main :
importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassProjeto{publicstaticvoidmain(String[]args){try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");}catch(Exceptione){JOptionPane.showMessageDialog(null,"Não foi possível carregar o \"Skin\" padrão. Definindo o padrão original.","Erro",JOptionPane.ERROR_MESSAGE);}//Tela Programa PrincipalTelaPrincipalmenu=newTelaPrincipal();menu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
ta dando um esse erro
--------------------Configuration: --------------------
C:\Documents and Settings\Weslley\Desktop\DEGRADE!\TelaPrincipal.java:164: invalid method declaration; return type required
WindowClosing(java.awt.event.WindowEvent evt) {
^
1 error
Process completed.
W
wes_00
kra ja consegui… vlw messssssssssssmoooooooooo ^^
é por issu que digo q esse é o melhor forun de ajuda em java…
vlw mesmo…
abraços
abelgomes
pelo jeito vc esta usando o netbeans, mas qual versao?
to achando estranho a maneira que vc esta adicionando o evento na sua tela…V ai como ficou na minha…
importjava.util.Vector;importjavax.swing.ComboBoxModel;importjavax.swing.DefaultListModel;importjavax.swing.JComboBox;importjavax.swing.JList;importjavax.swing.JOptionPane;/* * NovoJFrame.java * * Created on 8 de Outubro de 2008, 11:23 *//** * * @author p001226 */publicclassNovoJFrameextendsjavax.swing.JFrame{/** Creates new form NovoJFrame */publicNovoJFrame(){initComponents();}/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */// <editor-fold defaultstate="collapsed" desc=" Código Gerado "> privatevoidinitComponents(){jComboBox1=newjavax.swing.JComboBox();opcoes=newVector();for(inti=1;i<=10;i++){opcoes.addElement(i);}jComboBox1=newJComboBox(opcoes);jButton1=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);addWindowListener(newjava.awt.event.WindowAdapter(){publicvoidwindowClosing(java.awt.event.WindowEventevt){formWindowClosing(evt);}});jButton1.setText("Botao");jButton1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton1ActionPerformed(evt);}});org.jdesktop.layout.GroupLayoutlayout=neworg.jdesktop.layout.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(layout.createSequentialGroup().add(59,59,59).add(jComboBox1,org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(56,56,56).add(jButton1).addContainerGap(118,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(layout.createSequentialGroup().add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(layout.createSequentialGroup().add(53,53,53).add(jComboBox1,org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).add(layout.createSequentialGroup().add(68,68,68).add(jButton1))).addContainerGap(121,Short.MAX_VALUE)));pack();}// </editor-fold> privatevoidformWindowClosing(java.awt.event.WindowEventevt){JOptionPane.showMessageDialog(null,"No botao para fechar");try{evt.wait();}catch(InterruptedExceptionex){ex.printStackTrace();}}privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){System.exit(0);// TODO adicione seu código de manipulação aqui:}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newNovoJFrame().setVisible(true);}});}// Declaração de variáveis - não modifique privatejavax.swing.JButtonjButton1;privatejavax.swing.JComboBoxjComboBox1;// Fim da declaração de variáveis Vectoropcoes;}
erro que esta faltando um retorno.
W
wes_00
po cara… ja deu tudo serto aq… vlw mesmooooooo vcs saum demais… xD~