Estou criando uma tela de load para consultas no banco que possam demorar muito. Enquanto a consulta acontece a tela com um gif de carregando aparece.
O meu problema é o seguinte: quando eu chamo o requestStop() para mudar o valor da variável o laço de repetição WHILE no método Run da thread não é acessado, logo a minha tela não fecha.
Alguma sugestão? Segue meu código:
/*
*
*/
package load;
import javax.swing.*;
class SplashWindow extends JWindow {
Thread splashThread;
private volatile boolean stopRequested = false;
public SplashWindow() {
}
public SplashWindow(JDialog f) {
Thread n = new Thread(new Runnable() {
@Override
public void run() {
boolean done = false;
while (!stopRequested && !done) {
// abrir a tela com o gif de load
f.setVisible(true);
}
//fechar a tela
f.setVisible(false);
f.dispose();
}
});
n.start();
}
public void requestStop() {
stopRequested = true;
}
}