Problemas com SwingWorker

Fala pessoal, estou com um problema com a utilização do SwingWorker no codigo abaixo:

import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;

public class Numerar implements Runnable {

	JFrame jf = new JFrame("Numerando...");
	JPanel jp = new JPanel();
	JProgressBar carregador = new JProgressBar();

	public void run() {

		final SwingWorker worker = new SwingWorker() {

			protected Object doInBackground() throws Exception {
				for(int i=0; i <= 100000; i++){
					System.out.println("Numero: "+i);
				}
				return null;
			}

			protected void done() {
				super.done();
				JOptionPane.showMessageDialog(null,
						"O processo foi concluido com sucesso!", "Aviso",
						JOptionPane.INFORMATION_MESSAGE);
				jf.dispose();
			}
			
		};

		worker.execute();
		carregador.setValue(worker.getProgress());
		carregador.setIndeterminate(true);
		carregador.setStringPainted(true);
		carregador.setPreferredSize(new Dimension(200, 20));

		jp.setBorder(BorderFactory.createTitledBorder("Carregando..."));
		jp.add(carregador);
		jf.getContentPane().add(jp);
		jf.pack();
		jf.setResizable(false);
		jf.setVisible(true);

	}

	public static void main(String[] args) {

		new Numerar().run();

	}

}

Queria saber como fazer o JProgressBar mostrar o andamento do processo, e como seria para fazer o SwingWorker parar quando ocorrer uma determinada ação.

Desde ja, agradeço.

Da uma olhad no Javadoc… Tem um exemplo com progressbar na documentação…

http://java.sun.com/javase/6/docs/api/javax/swing/SwingWorker.html

Tem um tutorialde Swing e concorrência aqui, que ensina a usar o SwingWorker:
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html

Dei uma mexida na sua classe, para funcionar… Mas não deixe de ler o tutorial. Ele também explica sobre o InvokeLater, threads de inicialização e Event Dispatcher Thread. Abs!

import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
import java.util.List;
 
public class Numerar implements Runnable {

    JFrame jf = new JFrame("Numerando...");
    JPanel jp = new JPanel();
    JProgressBar carregador = new JProgressBar(0, 100000);

    public void run() {

        final SwingWorker worker = new SwingWorker<Void, Integer>() {
            protected Void doInBackground() throws Exception {
                for(int i=0; i <= 100000; i++){
                    System.out.println("Numero: "+i);
                    publish(i);
                }
                return null;
            }

            protected void process(List<Integer> progress){
                carregador.setValue(progress.get(progress.size()-1));
            }  
 
            protected void done() {
                super.done();
                JOptionPane.showMessageDialog(null,
                        "O processo foi concluido com sucesso!", "Aviso",
                        JOptionPane.INFORMATION_MESSAGE);
                jf.dispose();
            } 			
        };
 
        worker.execute();
        carregador.setValue(worker.getProgress());
        carregador.setStringPainted(true);
        carregador.setPreferredSize(new Dimension(200, 20));

        jp.setBorder(BorderFactory.createTitledBorder("Carregando..."));
        jp.add(carregador);
        jf.getContentPane().add(jp);
        jf.pack();
        jf.setResizable(false);
        jf.setVisible(true); 
    }
 
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Numerar()); 		 
    }

 }

O codigo não funcionou aqui, mas obrigado pela ajuda.

não?
aqui fucionou direitinho. Qual o erro?

Erro não tem!
Só o JProgressBar continua não mostrando o carregamento.

Vc copiou o codigo todo? ou so a partes? Alguém outro leitor do forum testou? aqui funciona direitinho

Você está utilizando o Java 6. Senão não vai funcionar.

Pessoal o problema era da distribuição mesmo, até era o Java 6, então peguei uma versão mais atual e funcionou perfeitamente.

hugov e andreban, obrigado pela ajuda!