[RESOLVIDO]Progressbar

Boa tarde galera, estou com um problema para criar uma simples barra de progressao, naveguei dentre alguns tópicos e achei muito complexo(completo), na verdade não tenho muita experiência em GUI. Bom mas lá vai…

Eu só queria “ver” a progressão, no caso do meu aplicativo ele esta copiando uma série de arquivos e a cada cópia ele sobe um pouco a barra, o problema é que não consigo ver essa progressão, ele começa com 0 e so muda no final com 100%.

Segue um modelo do código, não postei tudo, acredito que só isso já deixa claro.

public void aumentarBarra(int x) {
		// já esta declarada como global a progressBar
		int alvo = progressBar.getValue();
		alvo += x;
		for (int i = progressBar.getValue(); i <= alvo; i++) {
			progressBar.setValue(i);			
			try {
		//ja tentei diversos valores, ele ate demorar mais, so que nao exibe a progresssao.
				Thread.sleep(1);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

Desde já agradeço o tempo usado para este post.

Acho que já postei isto aqui;

package guj;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;

class Atualizador implements Callable<Void> {
    public Atualizador(JProgressBar prb) {
        this.prb = prb;
    }

    @Override
    public Void call() throws Exception {
        while (true) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    prb.setValue(val++);
                }
            });
            if (val >= 100)
                val = 0;
            Thread.sleep(100);
        }
    }

    private JProgressBar prb;
    private int val = 0;
}

public class ExemploCallable extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JPanel pnlBotoes = null;
    private JButton btnIniciar = null;
    private JButton btnParar = null;
    private JProgressBar prbProgresso = null;

    private ExecutorService executor;
    private FutureTask<Void> future;

    private JPanel getPnlBotoes() {
        if (pnlBotoes == null) {
            pnlBotoes = new JPanel();
            pnlBotoes.setLayout(new FlowLayout());
            pnlBotoes.add(getBtnIniciar(), null);
            pnlBotoes.add(getBtnParar(), null);
        }
        return pnlBotoes;
    }

    private JButton getBtnIniciar() {
        if (btnIniciar == null) {
            btnIniciar = new JButton();
            btnIniciar.setText("Iniciar!");
            btnIniciar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    btnIniciar.setEnabled(false);
                    future = new FutureTask<Void>(new Atualizador(prbProgresso));
                    executor.execute(future);
                    btnParar.setEnabled(true);
                }
            });
        }
        return btnIniciar;
    }

    private JButton getBtnParar() {
        if (btnParar == null) {
            btnParar = new JButton();
            btnParar.setText("Parar!");
            btnParar.setEnabled(false);
            btnParar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    btnParar.setEnabled(false);
                    future.cancel(true);
                    btnIniciar.setEnabled(true);
                }
            });
        }
        return btnParar;
    }

    private JProgressBar getPrbProgresso() {
        if (prbProgresso == null) {
            prbProgresso = new JProgressBar();
            prbProgresso.setStringPainted(true);
        }
        return prbProgresso;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ExemploCallable thisClass = new ExemploCallable();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    public ExemploCallable() {
        super();
        initialize();
        executor = Executors.newCachedThreadPool();
    }

    private void initialize() {
        this.setSize(300, 111);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setContentPane(getJContentPane());
        this.setTitle("Exemplo Callable");
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getPnlBotoes(), BorderLayout.SOUTH);
            jContentPane.add(getPrbProgresso(), BorderLayout.CENTER);
        }
        return jContentPane;
    }

}

É eu tinha visto alguns assim, talvez tenha passado pelo seu, mas não pensei que precisava de tanto código.

Obrigadão!
Vou dar mais atenção para essa parte do meu código.

Tu tbm pod implementar a Runnable e usar o metodo run().

Para finalizar…

acabei ficando com este metodo que foi postado aqui no GUJ tb.

int x = 5000;
for(int i=0; i<x; i++)
 {
       progress = (100*(i+1))/x;
       jProgressBar1.setValue(progress);
      // a Manha ta aki logo abaixo.
      jProgressBar1.getUI().update(jProgressBar1.getGraphics(), jProgressBar1);
      Thread.sleep(250);
}