JProgressBar

11 respostas
brunoccouto

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....

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();
                }
         }

11 Respostas

cassio

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!

brunoccouto

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

O código está assim:
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();
     }

Pq será??

cassio

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

brunoccouto

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

cassio

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!

brunoccouto

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

brunoccouto

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

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();
    }

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

Vlw....

cassio
loadingFrame.dispose();

Abraço!

brunoccouto

Funcionou não amigo…

silva.fernandes

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+

brunoccouto

deu certo! Vlw

Criado 31 de outubro de 2006
Ultima resposta 31 de out. de 2006
Respostas 11
Participantes 3