Não Executa o windowClosing

11 respostas
T

Galera estou com um probleminha, no meu programa eu coloquei um código pra executar no windowClosing mas o interessando é q só executa qdo eu fecho clicando no x que fica no canto superior direito ta tela. Eu coloquei um botão e no clique do mesmo já variei vários método na tentativa de disparar o método. já usei o setVible(false) , finaliza(), dispose(),Runtime.getRuntime().runFinalization()… e não dispara o windowClosing. alguém pode me dar uma idéia?

grato,

11 Respostas

marcioa1

Podes tentar System.exit(0), iou na definição do JFrame, seuFrame.setDEfaultCloseOperation(EXIT_ON_CLOSE);

Márcio

T

Valeu pela dica amigo mas também não funcionou, o setDEfaultCloseOperation do meu Frame já esta EXIT_ON_CLOSE, coloquei lá o comando e nada…

marcioa1

Thiago,

Coloca aqui o código de criação deste botão, e a geração do evento do click() .

Márcio

A

Olha eu sempre usei o NomeFrame.dispose() e sempre funcionou. Ele é bom se vc tem uma janela pai que abre uma janela filha e aí vc usa o dispose para fechar a janela filha. Ou então vc usa o system.exit(0) mesmo que aí encerra toda a sua aplicação.

T

ok então lá vai…

// declarando botão como atributo da classe Frame…
private JButton btnsair;

// no construtor da classe Frame

btnsair = new JButton();

btnsair.setIcon(new ImageIcon(img));

btnsair.addActionListener(this);

// adicionando o evendo ao Frame
this.addWindowListener(this);

// setando operação default…
setDefaultCloseOperation(EXIT_ON_CLOSE);

// executando botão sair…

if (acao.getSource()==btnsair){

System.exit(0);

} else
T

ax eu tbm já usei o método dispose() ele funcionou fechou a janela, mas o problema, é q qdo fecho a janela, ele não executa o evendo que está no windowClosing…

A
Então, faz o seguinte:

1 - tira a propriedade setDefaltCloseOperation() - não coloca isso;

2 - crie um método final chamado tipo fechaAplicacao() e dentro desse método vc chama o dispose();

3 - e dentro do método windowClosing() vc chama o métod fechaAplicacao();

4 - e dentro do botão sair vc também chama o método fechaAplicacao.
T

eu já pensei nisso ax, eu acho q vc não entendeu o meu problema, a questão não é executar o código do windowClosing, é o seguinte quando a janela é fechanda, o código do windowClosing é executado certo? só q na minha aplicação quando eu fecho a janela atravez do meu botão sair, q executa o método dispose(), ele passa direto e não executa o método windowClosing. Já qdo eu fecho a janela pelo “X”(botão no canto superior direito da janela) ele executa o método windowClosing naturalmente…

Eu pensei em criar um método chamado fechandoJanela() por exemplo, e colocar o código que está no windowClosing nele. Então no código do botão sair eu executava esse método e depois executava o dispose() mas isso no meu ponto de vista fica como uma guambiarra. Aí eu queria saber se vcs o pq de qdo eu executo o dispose() , System.exit() , RunTime.getRunTime.runFinalize()… não executa o windowClosing entendesse?

grato,

farribeiro

Você adicionou o evento WindowClosing() ao formulário?

A

É… Isso aí eu nem faço idéia porque não acontece. Eu sempre fiz essa gambiarra mesmo.

T

eu acho q vou me render ax mas blz , vlw galera pelo apoio… :thumbup:

Criado 6 de julho de 2005
Ultima resposta 7 de jul. de 2005
Respostas 11
Participantes 4