[RESOLVIDO] setDefaultCloseOperation chamada de metodo

10 respostas
O

Oi, alguém sabe como eu faço pra quando eu fechar uma janela, eu poder chamar uma função?
Po exemplo, eu tenho lá a seguinte parte do código:

setDefaultCloseOperation(DISPOSE_ON_CLOSE); // que fecha a minha janela

eu quero que no momento em que eu fechar a minha janela eu consiga chamar um método q eu criei.
Alguém sabe como?
Obrigada

10 Respostas

V

Troque:

Para:

Depois, você precisa adicionar um listener para escutar quando seu usuário pressionou o botão de fechar. Para isso, você cria um windowListener:

this.addWindowListener(new WindowAdapter() { @override public void windowClosing(WindowEvent evt) { suaFuncao(); dispose(); //pede para a janela fechar } }

Note que como agora é você quem dá o comando dispose() explicitamente, você poderia até exibir ali uma confirmação, perguntando se o cara quer mesmo fechar a janela ou não, e cancelar o fechamento, caso ele responda não.

O

Ma sue tenho q imporatar alguma coisa? Desculpe a pergunta cretina, mas quando eu digito this.addWindow… ele não reconhece esse método

V

Não precisa importar nada.
Pode colocar o código completo da sua janela?

O
public class BottomFrame extends JInternalFrame {
 public BottomFrame( parametros para o construtor) {
   this.id = id;
   this.act1=act1;
   this.act2=act2;
   this.act3=act3;
   this.act4=act4;
   this.act5=act5;
   setSize(700,550);
   setLocation(0,25);
   setClosable(true);
   setVisible(true);
   setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 
   this.addWindowListener(new WindowAdapter() {  // aqui jah não reconhece
}
O

Então, eu acho q o WindowListner soh funciona pra JFrame, mas eu tô usando JInternalFrame… será q tem a ver?

O

eu achei isso aqui
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4086498
mas não entendi como usar… alguém pode me ajudar?

O

eu achei isso tb:
http://forums.sun.com/thread.jspa?threadID=349242
e implementei da seguinte forma:

addInternalFrameListener (new InternalFrameListener () {
   public void internalFrameClosing (InternalFrameEvent ife){
       System.out.println("Teste");
        dispose();
    }
} );

Porém não tah funcionando… ele manda eu implentar todos o métodos do InternalListner…
e mesmo quando eles são implentados, isso não funciona!!!
Por favor!!!
:roll:

V

addInternalFrameListener (new InternalFrameAdapter() { @Override public void internalFrameClosing (InternalFrameEvent ife){ JOptionPane.showMessageDialog(null, "Teste"); dispose(); } } );

O

Valeu Viny!!! Eh isso ai!!!

R

Só um detalhe ai, porque o dispose() não estava funcionando aqui, apesar da janela fechar, a instancia ainda continua rodando, eu uso o metodo System.exit(n);
onde n é uma variavel int que retorna na minha caixa de dialogo

Criado 30 de julho de 2010
Ultima resposta 27 de jun. de 2011
Respostas 10
Participantes 3