Quero abrir uma tela com um gif enquanto minhas consultas estão rodando. Porém minha tela não aparece, mesmo sendo seu isVisible = true.
Minha aplicação é em Java desktop.
- Código da thread:
import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE;
public class ThreadLoad extends Thread {
TelaLoad frame;
private volatile boolean fecharFrame = true;
@Override
public void run() {
try {
if (!fecharFrame()) {
frame.setVisible(true);
}
frame.setVisible(false);
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
} catch (Exception e) {
System.out.println("Erro thread: " + e.getMessage());
}
}
public synchronized void requestStop() {
this.fecharFrame = true;
}
public synchronized void requestStar() {
fecharFrame = false;
}
public void frame(TelaLoad j) {
frame = j;
}
public synchronized boolean fecharFrame() {
return fecharFrame;
}
}
-
Utilizo um JDialog onde tenho as funções que utilizo:
public void iniciar() { //se não tiver thread, abrir uma if (t.fecharFrame()) { t = new ThreadLoad(); t.frame(this); t.requestStar(); t.start(); } } public void fechar() { //se tiver thread, fecha-la if (!t.fecharFrame()) { t.frame(this); t.requestStop(); t.interrupt(); this.dispose(); } }
Para abrir o load então uso tela.iniciar() e para chega tela.fechar(); Porém mesmo com requisições que demoram a tela com o gif não fica visível.
Alguém poderia me ajudar, obrigado.




