JFrame + JPainel + progressbar não aparece até terminar de ler banco de dados

5 respostas
davidbentolila

Eu tenho um aplicação e quero colocar um feedback para o usuário enquanto leio o Banco de dados, pois é meio grande;

getPanelInformation().removeAll();
   getProgressBar().setString(language.getString("message.generating.readingDB"));
   getPanelInformation().add(getProgressBar());
   getPanelInformation().validate();

Teoricamente aki a progressbar ja deveria esta aparecendo na tela

System.out.println("getting all api");
   api.getOAC(false);   // aki que o banco de dados é lido
   System.out.println("api completed");

essa progress bar esta da seguinte forma, progressBar.setIndeterminate(true);
por que é so mesmo para mostrar para o usuário que o programa não travou

alguma ajuda?

5 Respostas

Alexandre_Saudate

tenta usar um update/paint/repaint/paintAll da vida…

A

Ela não vai aparecer msm…

Procure por SwingWorker.

Alguem me corrija se eu estiver errado

Sua barra não será atualizada prq a Thread que esta rodando é o seu próprio main, para o objeto ser atualizado outra thread deve fazer o “servico”.

davidbentolila

Qual a vantagem do swingworker para a thread??

se eu usar uma thread, devo deixa-la rodando a leitura ao Banco ou a progressbar??

Se eu usar

Thread a = new Thread(){ @Override public void run() { getAllAPI(); //este método que le no banco de dados } };

eu obtenho este erro

teria como eu esperar a thread acabar para eu continuar o programa???

Alexandre_Saudate

Bom... este erro é do Hibernate.

O que o André quis dizer é o seguinte... tua progressbar deve ser uma thread. Ficaria mais ou menos assim:

public class MinhaProgressBar extends JProgressBar implements Runnable{


             public void run() {
                         while (true) {
                                    atualizaDados();
                                    wait();

                         }

              }


}

E aí, quando você quiser "despertar" essa thread, use um notify().

Recapitulando... use a thread principal para ler do BD e uma secundária para atualizar a JProgressBar

davidbentolila

Valeu galera, mas ja tentei de tudo e nada…
ja percebi q tenho um sério problema com threads heheheh

Criado 26 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 5
Participantes 3