JProgressBar

Aew Galera… me deem uma luz ai…
Como faço pra fazer o JProgressBar funcionar logo quando abro a Janela inicia do meu programa???

Eu to usando tipo assim:… (mas só consegui fazer funcionar com evento de botao…) Quero fazer funcionar logo ao abrir o programa…

[code] Rectangle progressRect = prog.getBounds();
progressRect.x = 0;
progressRect.y = 0;
prog.setMinimum(0);
prog.setMaximum(100);

    for(int i=0 ; i < 100 ; i++){
            prog.setValue(i);
            prog.setString("Loading...");
            prog.paintImmediately( progressRect );
            try {
                Thread.sleep(50);
            } catch(InterruptedException ex) {
                ex.printStackTrace();
            }
     }[/code]

Olá!

Põe esse seu código em um método separado (só por organização) e chama este método no construtor da sua classe que extende JFrame (ou JDialog, não sei qual tipo de janela é essa sua).

Abraço!

Eu fiz isso… só que quando abri o programa o Progress Bar ja está completo…

O código está assim:

[code] public static void CarregaLoading() {
Rectangle progressRect = prog.getBounds();
progressRect.x = 0;
progressRect.y = 0;
prog.setMinimum(0);
prog.setMaximum(100);

    for(int i=0 ; i < 100 ; i++){
            prog.setValue(i);
            prog.setString("Loading...");
            prog.paintImmediately( progressRect );
            try {
                Thread.sleep(50);
            } catch(InterruptedException ex) {
                ex.printStackTrace();
            }
     }        
}

public CarregaPagina() {
    initComponents();
    CarregaLoading();
 }[/code]

Pq será??

Claro que vai estaqr cheio, o seu loop é bem rápido né… :slight_smile:
Tenta aumetnar o tempo do sleep da Thread…

Ihh… nao deu certo tambem… aconteu o seguinte…
Demorou um tempao pra aparecer meu programa e quando apareceu ja estava cheio o Progress ja…

ProgressBar sempre dá problema desse tipo… SEMPRE!

Vc tem que criar outra Thread quwe mantenha sua interface funcional enquanto seu programa faz outras coisas, senão ele não consegue atualizar a interface (o que é necessário para q vc veja a barrinha se mexendo) e ainda processar o resto do código…

Tem uma classe da sun (tem q baixar no site) chamada SwingWorker que faz isso pra vc. Aqui no fórum tem bastante tópico falando sobre ela tbm, só dar uma pesquisada.

Abraço!

Vlw… vo fazer isso…
Depois posto aqui o resultado! :slight_smile:
Obrigado!

Amigos, eu consegui… tive que executar dois Threads… o código principal ficou assim:

[code]public static void main(String args[]) {
Runnable run = new Runnable() {
public void run() {
try{
new CarregaPagina().setVisible(true);
} catch(Exception ex){
JOptionPane.showMessageDialog(null,ex);
}

        //Chama na thread do swing
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                prog.setIndeterminate(false);
                Rectangle progressRect = prog.getBounds();
                progressRect.x = 0;
                progressRect.y = 0;
                prog.setMinimum(0);
                prog.setMaximum(100);
            
                for(int i=0 ; i < 100 ; i++){
                    prog.setValue(i);
                    prog.paintImmediately( progressRect );
                try {
                    Thread.sleep(25);
                } catch(InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
                new Login().setVisible(true);
            }
        });
    };
};
new Thread(run).start();
}[/code]

Só tem mais um problema… quando abre a outra classe login como faço pra fechar a janela do loading???

Vlw…

loadingFrame.dispose();

Abraço!

Funcionou não amigo…

Amigo tenta assim …

Crie um método …

    public void finalize(){

    	oNomeDoSeuFrame.dispose();
    }
}

E chama esse método na no contrutor da classe Login

Qualquer coisa grita ai

Falow

T+

deu certo! Vlw