JOptionPane

10 respostas
W

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??

vlw …

10 Respostas

T

http://www.guj.com.br/posts/list/53351.java

abelgomes
  1. addWindowListener(new WindowAdapter() {
  2. public void windowClosing(WindowEvent e) {
    
  3. JOptionPane.showMessageDialog(null, "clique no botao sair da area de trabalho do sistema para sair");
    
  4. }
    
  5. });

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…
:wink:

W

mais entaum como q vai ficar o comando??? com esse e.wait()??

vlw …

abelgomes
addWindowListener(new WindowAdapter() {    
         public void windowClosing(WindowEvent e) {    
             JOptionPane.showMessageDialog(null, "clique no botao sair da area de trabalho do sistema para sair");  
         try{
          e.wait();
}catch(excessao e){
}
         }  
 });

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…:wink:

W

deu cara.. colokei tudu sertim.. mais ainda a tela principal continua fexando... =(

da uma olhada no meu codigo aew..

addWindowListener(new WindowAdapter() {      
          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){  
                 }  
     
           }   
        });

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ó…:

private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        JOptionPane.showMessageDialog(null,"No botao para fechar");
        try {
            evt.wait();
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }

funcionou perfeitamente…

W
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TelaPrincipal extends JFrame implements ActionListener
{
	private JMenuBar jmPrincipal = new JMenuBar();
    private JMenu    jmCadastro = new JMenu("Cadastros");
    private JMenu    jmListagen = new JMenu("Listagens");
    private JMenu    jmSobre = new JMenu("Sobre..");
    
    private JMenuItem jmCadAgenda   = new JMenuItem("Agendamento");  // itens que vao dentro dos menus que estao dentro do principal
    private JMenuItem jmCadCliente   = new JMenuItem("Cliente");
    private JMenuItem jmCadCidade    = new JMenuItem("Cidade");
    private JMenuItem jmCadEstado   = new JMenuItem("Estado");
    private JMenuItem jmCadProduto   = new JMenuItem("Produto");
    private JMenuItem jmCadServico   = new JMenuItem("Servico");
    
    private JMenuItem jmListAgenda  = new JMenuItem("Agendamento");  // itens que vao dentro dos menus que estao dentro do principal
    private JMenuItem jmListCliente  = new JMenuItem("Cliente");
    
    private JMenuItem jmSobreSistema = new JMenuItem("Alunos");  // itens que vao dentro dos menus que estao dentro do principal
    private JMenuItem jmSobreAluno   = new JMenuItem("Sistema");
    

    
    
	ImageIcon image1 = new ImageIcon("user1.png");
	ImageIcon image2 = new ImageIcon("horario.png");
	ImageIcon image3 = new ImageIcon("sairprinci.png");
	ImageIcon image4 = new ImageIcon("agend.png");
	
	
	private JButton bCliente   = new JButton(image1);
    private JButton bHora      = new JButton(image2);
    private JButton bSair      = new JButton(image3);
    private JButton bAgenda    = new JButton(image4);
    
    private Container myPainel = getContentPane();
    public JPanel myJPanel = new JPanel();  

    
    public TelaPrincipal()
    {
    	myPainel.setLayout(new BorderLayout());
    	myPainel.add("East", myJPanel);
    	
    	getContentPane().setLayout(new BorderLayout());
    	JPanel painel = new JPanel();
    	getContentPane().add("East", painel);


    	painel.setLayout(new GridLayout(4, 1, 1, 1));
    	
    	//--------------------colocando os textos de ajuda ---------------------
    	
    	//opçoes dos menu bar
    	
    	jmCadastro.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 cadastro
    	
    	jmCadCliente.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 listagens
    	
    	jmListCliente.setToolTipText("Click para Listar um Cliente");
    	jmListAgenda.setToolTipText("Click para Listar um Agendamento");
    	
    	
    	//opçoes dos itens do menu bar Sobre
    	
    	jmSobreSistema.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 principal
    	
    	bCliente.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 menu
        jmCadastro.add(jmCadAgenda);  // cadastro escreve cadastro cliente
        jmCadastro.add(jmCadCliente);// cadastro escreve cadastro fornecedor
        jmCadastro.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(new WindowAdapter() {
       	    formWindowClosing(java.awt.event.WindowEvent evt) {                                     
                  JOptionPane.showMessageDialog(null,"No botao para fechar");  
                  try {  
                      evt.wait();  
                  } catch (InterruptedException ex) {  
                     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 :

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Projeto {
    
    public static void main(String[] args) {
    	
    try {    
       UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");  
    }  
    catch (Exception e) {  
     JOptionPane.showMessageDialog(null,  
             "Não foi possível carregar o \"Skin\" padrão. Definindo o padrão original.", "Erro",  
             JOptionPane.ERROR_MESSAGE);  
     } 
        //Tela Programa Principal
        TelaPrincipal menu = new TelaPrincipal();
        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

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…

import java.util.Vector;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JOptionPane;
/*
 * NovoJFrame.java
 *
 * Created on 8 de Outubro de 2008, 11:23
 */

/**
 *
 * @author  p001226
 */
public class NovoJFrame extends javax.swing.JFrame {
    
    /** Creates new form NovoJFrame */
    public NovoJFrame() {
        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 ">                          
    private void initComponents() {
        jComboBox1 = new javax.swing.JComboBox();
        opcoes= new Vector();
        for(int i =1;i<=10;i++){
            opcoes.addElement(i);
        }
        jComboBox1=new JComboBox(opcoes);
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jButton1.setText("Botao");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        org.jdesktop.layout.GroupLayout layout = new org.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>                        

    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        JOptionPane.showMessageDialog(null,"No botao para fechar");
        try {
            evt.wait();
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }                                  

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
System.exit(0);// TODO adicione seu código de manipulação aqui:
    }                                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NovoJFrame().setVisible(true);
            }
        });
    }
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JButton jButton1;
    private javax.swing.JComboBox jComboBox1;
    // Fim da declaração de variáveis                   
    Vector opcoes;
}

erro que esta faltando um retorno.

W

po cara… ja deu tudo serto aq… vlw mesmooooooo vcs saum demais… xD~

Criado 9 de outubro de 2008
Ultima resposta 9 de out. de 2008
Respostas 10
Participantes 3