Cancelar evento

4 respostas
allan_net

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);

}
}
			});

4 Respostas

Kknd

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

allan_net

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

Kknd

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!

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

Luiz_Rocha

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!

Criado 13 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 4
Participantes 3