Cancelar evento

Tenho o seguinte evento para fechar a janela do meu formulário, só que quando eu clico na opção não ele fecha assim mesmo.

Alguém pode me ajudar?

this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent ex) {

String[] op = {“Sim”,“Não”};
int val = JOptionPane.showOptionDialog(null,“Deseja realmente Sair?”,“ATENÇÃO”,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,op,op[0]);
if (val == 0){
try{
thread.stop();
}catch(NullPointerException ex){}
System.exit(0);
}

				}
			});

Você também tem que setar o defaultCloseOperation para “DO_NOTHING”

Obridago Luiz, sua idéia caiu como uma luva.

[quote=LuizRocha]Saudações, allan_net.

Não tenho condições de testar minha sugestão agora, mas vc pode fazer o seguinte:

existe um método que define a operação default realizada pela Frame quando alguém aperta o botão X no canto da janela: setDefaultCloseOperation(int i).

Vc pode enviar como argumento:
HIDE_ON_CLOSE ou
DISPOSE_ON_CLOSE ou
EXIT_ON_CLOSE ou
DO_NOTHING_ON_CLOSE

pegando construtor do objeto da sua janela e digitando nele:

this.setDefaultCloseOperaion(DO_NOTHING_ON_CLOSE) ;

vc fará com que nada aconteça (por default) quando o botão X for apertado.

Assim, quando o usuário clicar no X da sua janela, se abrirá o JOptionPane. Se ele apertar sim (val == 0) a janela fechará porque você pôs Thread.stop() e System.exit(0). Mas se ele apertar não (val != 0) a janela executará a sua operação default para o botão X: nada - graças ao DO_NOTHING_ON_CLOSE.

Essa solução não foi testada, mas pode ser que dê certo.

Boa sorte![/quote]

Ops, postamos na mesma hora, desculpe pelo post igual. A dica aí está bem completa!

Saudações, allan_net.

Não tenho condições de testar minha sugestão agora, mas vc pode fazer o seguinte:

existe um método que define a operação default realizada pela Frame quando alguém aperta o botão X no canto da janela: setDefaultCloseOperation(int i).

Vc pode enviar como argumento:
HIDE_ON_CLOSE ou
DISPOSE_ON_CLOSE ou
EXIT_ON_CLOSE ou
DO_NOTHING_ON_CLOSE

pegando construtor do objeto da sua janela e digitando nele:

this.setDefaultCloseOperaion(DO_NOTHING_ON_CLOSE) ;

vc fará com que nada aconteça (por default) quando o botão X for apertado.

Assim, quando o usuário clicar no X da sua janela, se abrirá o JOptionPane. Se ele apertar sim (val == 0) a janela fechará porque você pôs Thread.stop() e System.exit(0). Mas se ele apertar não (val != 0) a janela executará a sua operação default para o botão X: nada - graças ao DO_NOTHING_ON_CLOSE.

Essa solução não foi testada, mas pode ser que dê certo.

Boa sorte!