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:
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:
e lembre-se que depois do seu w.execute(); seu programa não vai parar, afinal o SwingWorker é um trabalho paralelo ao seu programa.
Fabiano_Fernandes
@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”.
Satangozo
Então… A variável “i” é um contador.
Suponha que você tenha que abrir 3 telas
intcont=1;//codigo que abre a tela 1progressBar.setValue((cont/3)*100);cont++;//codigo que abre a tela 2progressBar.setValue((cont/3)*100);cont++;//codigo que abre a tela 3progressBar.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);
Satangozo
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