[Ajuda] Carregar jProgressBar

Estou concluindo um projeto e estou querendo colocar um jProgressBar “Barra de progressão” na inicialização do programa, para carregar conforme meus JFrames são carregados.

É a primeira vez que estou trabalhando com jProgressBar, já fiz várias buscar na rede, porém, só encontrei formas de definir um tempo para o carregamento da barra, mas nada de como acompanhar a criação dos JFrames para que eu possa ter um jProgressBar “real” que é o objetivo, mostrar visualmente a inicialização do programa.

Amigo ProgressBar é um assunto meio chato de pegar a idéia… Mas vou tentar explicar…
Geralmente quando tentamos atualizar o progresso dentro do nosso programa ele fará isso por blocos então quando:

int maximo = 100;
int cont = 1;
while (cont < maximo){
   progressBar.setValue(cont);
   cont++;
}

seu progressBar só vai atualizar quando o bloco while acabar. Afinal seu programa não pode fazer duas coisas ao mesmo tempo (até então). E para resolver você terá que criar uma Thread (que é exatamente um código que executa ao mesmo tempo do resto do seu programa).Vou te dar uma idéia do que fazer, adapte para seu caso:

JProgressBar progressBar = new JProgressBar();
progressBar.setStringPainted(true);
progressBar.setValue(0);
progressBar.setSize(new Dimension(100, 23));
SwingWorker w = new SwingWorker() {
            @Override
            protected Object doInBackground() throws Exception {
                for (int i = 1; i <= 100; i++) {
                    try {
                        progressBar.setValue(i);
                        progressBar.setString(i + "%");
                        Thread.sleep(20);
                    } catch (InterruptedException ex) {
                        ex.printStackTrace();
                    }
                }
                return 0;
            };
w.execute();

e lembre-se que depois do seu w.execute(); seu programa não vai parar, afinal o SwingWorker é um trabalho paralelo ao seu programa.

@Satangozo
Amigo até ai eu entendi, mas no exemplo que você mostrou acima, minha barra vai carregar de acordo com a variavel i, e não é exatamente isso que eu quero.
Mas o que eu quero é que ela carregue de acordo com o “carregamento inicial / criação de frames”.

Então… A variável “i” é um contador.
Suponha que você tenha que abrir 3 telas

int cont = 1;

//codigo que abre a tela 1
progressBar.setValue((cont/3)*100);
cont++;

//codigo que abre a tela 2
progressBar.setValue((cont/3)*100);
cont++;

//codigo que abre a tela 3
progressBar.setValue((cont/3)*100);
cont++;

Você tem uma classe principal que é chamada quando seu programa é executado e tem um método main(), e é nele que você tem que implementar tal código. Já se você não souber qual é o numero para o contador você pode criar um progressBar indeterminado assim:

progressBar.setIndeterminate(true);

Você executa uma série de procedimentos para carregar isso que você me disse, e essa série de coisas tem que ser disparado pelo SwingWorker para que ele possa controlar seu JProgressBar…

Telinha abre com progressBar > SwingWorker inicia o carregamento das telas > SwingWorker controla estado do progressBar > SwingWorker finaliza > telinha fecha > seu frame principal abre

@Satangozo
Estou dando uma olhada aqui

Se não for pedir de mais, e se não for dar muito trabalho, tem como me dar um código simples, para eu conseguir entender melhor?
Vlw mano

[quote=Satangozo]
//codigo que abre a tela 1
progressBar.setValue((cont/3)*100);
cont++;

//codigo que abre a tela 2
progressBar.setValue((cont/3)*100);
cont++;

//codigo que abre a tela 3
progressBar.setValue((cont/3)*100);
cont++;[/quote]

Não tinha visto o código, vou testar aqui, e depois te dou a resposta se deu certo. obrigado por enquanto

Não obtive o resultado que eu gostaria amigo.
Vou continuar aguardando sugestões. Mas muito obrigado!