Dispose em instância

3 respostas
andbecker

Olá pessoas,

criei uma classe para confirmar a saida da tela com o seguinte código:

/**
 * @(#)Sair.java
 *
 *
 * @author Luciano Santos
 * @version 1.00 2010/4/21
 */

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

public class Sair extends JFrame implements ActionListener{
    	public void actionPerformed(ActionEvent clic){ //*Ação que lhe peguta (sair)
    	
        int opcao; //*
        opcao=JOptionPane.showConfirmDialog(null, //*pergunta ao usuario
        "Deseja mesmo sair do cadastro ?",
        "Fechar",JOptionPane.YES_NO_OPTION); 
        if (opcao==JOptionPane.YES_OPTION) //* se resposta for sim
        dispose(); //*fecha a janela
        
    	}
    }

e para instanciar em outra classe usei o seguinte paramentro no botão:

btnSair.addActionListener(new Sair());

a confirmação aparece, mas a tela não fecha. Alguem sabe o que pode estar errado?

3 Respostas

pedroroxd

Na realidade não é isso

if (opcao==JOptionPane.YES_OPTION)

e sim

if (opcao ==0)

Então vai funcionar…
Mas se você só for usar a variável opcao para isso, não é realmente necessária…
Fica mais fácil se vc tirar todo akele código e substituir só por isso:

if (JOptionPane.showConfirmDialog(null, "Deseja mesmo sair do cadastro ?", "Fechar", JOptionPane.YES_NO_OPTION) == 0) { dispose(); }

renamed
pedroroxd:
Na realidade não é isso
if (opcao==JOptionPane.YES_OPTION)
e sim
if (opcao ==0)
Na verdade, as duas coisas equivalem ao mesmo!
public static final int 	YES_OPTION 	0
Fonte: [url]http://java.sun.com/j2se/1.4.2/docs/api/constant-values.html#javax.swing.JOptionPane.YES_OPTION[/url]

andbecker
Rodei aqui e funcionou cara, tem certeza que você colocou o listener direitinho? Veja:

import java.awt.event.*;

import javax.swing.*;

public class Sair extends JFrame implements ActionListener {
	private JButton btnSair = new JButton("Sair");

	public Sair() {
		setBounds(10, 10, 200, 200);
		add(btnSair);
		setLayout(null);
		btnSair.addActionListener(this);
		btnSair.setBounds(10, 10, 100, 30);

	}

	public void actionPerformed(ActionEvent clic) { // *Ação que lhe peguta
													// (sair)

		int opcao; // *
		opcao = JOptionPane.showConfirmDialog(
				null, // *pergunta ao usuario
				"Deseja mesmo sair do cadastro ?", "Fechar",
				JOptionPane.YES_NO_OPTION);
		if (opcao == JOptionPane.YES_OPTION) // * se resposta for sim
			dispose(); // *fecha a janela

	}

	public static void main(String[] args) {
		new Sair().setVisible(true);
	}
}
pedroroxd

Realmente… Não sabia não, vlws =P

Criado 21 de abril de 2010
Ultima resposta 22 de abr. de 2010
Respostas 3
Participantes 3