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);
}
});
Atualizar jLabel
4 Respostas
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.
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.
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.
Não, era colocar o código todo, não só o setText.
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.
Deu certo cara, muito obrigado.