Estou com um problema, reescrevi o evento WindowClosing e tudo funciona bem, mas a atualização de um JLabel dentro desse frame que está sendo fechado não atualiza de jeito nenhum. Já tentei dar um validate e repaint no painel pai, no frame e até no jLabel e nada. Segue um pedaço do código:
[code]
this.addWindowListener(new WindowAdapter(){ @Override
public void windowClosing(WindowEvent we){
lStatus.setText("…");
Logger.getLogger(“op”).log(“Encerrando…”);
killThreads();
Logger.getLogger(“op”).log(“Encerrado!”);
System.exit(1);
}
});[/code]
Alguém tem alguma dica?
Muito obrigado.
Obrigado.
[quote=ViniGodoy]Tópico movido para o fórum de interface gráfica.
Para isso funcionar, esse código deveria estar sendo executado numa thread secundária.
[/quote]
Cara coloquei em thread mas não funcionou. Ficou desse jeito:
public void windowClosing(WindowEvent we){
new Thread(){
@Override
public void run(){
lStatus.setText("...");
}
}.start();
Logger.getLogger("op").log("...");
killThreads();
Logger.getLogger("op").log("Encerrado!");
System.exit(1);
}
Era essa mesma sua sugestão?
Muito obrigado.
O que acontece é que o swing roda num loop: processa evento, repinta, processa, repinta… e como seu código está dentro do evento está mantendo a thread do swing ocupada processando. Só quando o método acabar, é que ele vai repibtar.
Por isso a necessidade de mover um processamento pesado para outra thread.