Statusbar

2 respostas
claitono

boa noite

gostaria de mais uma ajuda de vcs.
estou com o seguinte problema:

estou fazendo um mini browser ejá esta quase tudo funcionando , mas o detalhe é que não consigo fazer funcionar o status bar funcionar como deveria , tipo quando esta carregando um site o statusbar tem que dizer “CARREGANDO” e uma barrinha do lado motrando o carregamento e quando termina de carregar dizer “TERMINADO”.
o meu codigo quando abro o browser fica com a palavra carregando mesmo o site já ter carregado.
alguem pode me dar uma luz.

sds

2 Respostas

claitono

este é o codigo do status bar

que fica com a palavra CONCLUIDO e fica a barrinha do status correndo de um lado para o outro.

package browser;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

/*
 * StatusBar é um componente para trabalhar com barra de status. Muito similar a barra de estatus
 * de navegadores de internet (browsers). É composto basicamente por um String status, que
 * indica uma mensagem de processamento e uma barra de progressão (JProgressBar).
 *
 * Seu principal método é o setStatus(String, int, boolean). Para mais informações veja
 * a documentação do método.
 */

public class StatusBar extends JPanel {

    private JProgressBar progressBar;
    private int progress, loader, delay;
    private JLabel statusText;
    private String defaulStatusText;

    public StatusBar(){
        this.defaulStatusText = "Concluído";
        this.initStatusBar(true);
    }

    private void initStatusBar(boolean indeterminate){
        this.delay = 7;
        this.progress = 0;
        this.statusText = new JLabel(defaulStatusText);
        this.progressBar = new JProgressBar();
        if(indeterminate){
                this.progressBar.setIndeterminate(true);
        }
        this.progressBar.setValue(progress);
        this.progressBar.setVisible(true);

        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());
        panel.add(this.statusText);
        panel.add(this.progressBar);

        this.setLayout(new BorderLayout());
        this.add(panel, BorderLayout.EAST);
    }

    /**
     * <p>Informa qual é o status atual do StatusBar</p>
     *
     * @param status = texto que indica o status corrente de processo.
     * @param load = valor em % (percentual de 0% a 100%) que equivale o processo.
     * @param loading = caso seja true então será gerado a aminação de x% a y% da barra de progresso.
     * Onde x% é o ultimo estado da barra de procresso e y% (<b>load</b>) é até onde a barra de progresso deve ser
     * carregada. Caso seja informado 100% no argumento <b>load</b> então a barra de progresso será
     * carregada até o fim e finalizada com o status padrão.
     * */

    public void setStatus(String status, int load, boolean loading){
        if(load < 0 || load > 100){
            Exception e = new Exception("O valor de procresso (load) deve estar entre 0% e 100%");
            e.printStackTrace();
        }
        else{
            if(load == 100){
                finalizeLoad();
            }
            else{
                statusText.setText(status);
               progressBar.setValue(progress);
                progressBar.setVisible(true);

                if(loading){
                    load(load);
                }
                else{
                    progress = loader;
                    progressBar.setValue(progress);
                }
            }
        }
    }

    private void load(int load){
        loader = load;
        Thread progressive = new Thread(new Runnable() {
            public void run() {
                for (int i = progress; i < loader; i++) {
                    progressBar.setValue(i);
                    try {
                        Thread.sleep(delay);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                progress = loader;
                progressBar.setValue(progress);
            }
        });
        progressive.start();
        
    }

    /*
     * <p>Finaliza a prograssão de barra de progresso e posiciona o status de processo no status
     * padão do {@link StatusBar}.</p>
     */

    public void finalizeLoad(){
        Thread progressive = new Thread(new Runnable() {
            public void run() {
                for (int i = progress; i < 100; i++) {
                    progressBar.setValue(i);
                    try {
                        Thread.sleep(delay);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                progress = 0;
                progressBar.setValue(progress);
                progressBar.setVisible(false);
                statusText.setText(defaulStatusText);
            }
        });
      //  progressive.start();
    }

    public int getProgress() {
            return progress;
    }

    public void setProgress(int progress) {
        if(progress < 0 || progress > 100){
            Exception e = new Exception("O valor de procresso (load) deve estar entre 0% e 100%");
            e.printStackTrace();
        }
        else{
            this.progress = progress;
            if(progress == 100){
                finalizeLoad();
            }
        }
    }

    /*
     * <p>
     * Define o tempo de carregamento da barra de progresso.
     * </p>
     * @param delay : tempo de atraso (em ms).
     */
    public void setDelay(int ms){
        delay = ms;
    }

    public String getStatusText() {
        return statusText.getText();
    }

    public void setStatusText(String statusText) {
        this.statusText.setText(statusText);
    }

    public String getDefaulStatusText() {
        return defaulStatusText;
    }

    public void setDefaulStatusText(String defaulStatusText) {
        this.defaulStatusText = defaulStatusText;
        this.finalizeLoad();
    }
}
claitono

alguem pode me ajudar?

Criado 22 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 2
Participantes 1