SwingWorker antes de iniciar o programa

Bom pessoal gostaria de usar uma JProgressBar para carregar a abertura do meu programa
pois o mesmo demora um pouquinho para preencher todas as tabelas pois tenho mais de 50 mil registros
no meu sql server e fica um pouco lento apenas na hora de iniciar,estou tentando fazer desta
forma mas não sei ao certo qual processo irei colocar no doInBackground(),estou usando o
initialize() da minha aplicação principal so que dessa forma a barra começa a carregar so quando
o programa acaba de inicializar e não desde o inicio,o dialog que contém a barra
aparece de cara mas a barra não carrega…
Eu queria que a barra pegasse o tempo que meu programa demora para carregar e não desse jeito carregando
depois de iniciar…


//main principal
public static void main(String[] args) {
	     Interface application = new Interface();
         application.show();
}

//construtor do meu programa principal
public Interface() {
		super();
		initialize();
	}


//initialize do programa principal
private void initialize() {

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
		this.setSize(new java.awt.Dimension(980,650));
		this.setBounds(new java.awt.Rectangle(20,50,980,650));
		this.setContentPane(getJContentPane());
		this.setResizable(false);
		this.setJMenuBar(getJJMenuBar());
		this.setTitle("Monitoramento");
               
                 this.addComponentListener(new java.awt.event.ComponentAdapter() {
			public void componentShown(java.awt.event.ComponentEvent e) {
			  final Loading barra = new Loading();   
		          barra.setVisible(true);   
		          SwingWorker worker = new SwingWorker(){   
		             
		               protected Object doInBackground() throws Exception {   
		                    
		            	    initialize();
		                    return null;   
		               }   
		             
		               protected void done() {   
		                   barra.setVisible(false);   
		               }   
		          
		          };   
		          worker.execute();   
			}
		});
  }

//construtor da classe dialog que contem a JProgressBar
           public Loading() {   
	        this.setTitle("Carregando...");
	        JProgressBar progress = new JProgressBar();   
	        progress.setIndeterminate(true);
	        progress.setSize(200,20);   
	        getContentPane().add(progress);
	        pack();   
	          
	    }

Consegui fazer a barra funcionar certinho na geração dos relatórios,
mas para carregar a aplicação não…Se alguem puder ajudar,com alguma ideia
utilizando SwingWorker… vlw… []'s

Tive problema parecido com o antigo SwingWorker(Esse do Mustang nunca usei), eu resolvi fazendo uma SplashScreen com a JProgressBar anexada, foi mais tranquilo… Já tentou colocar o setIndeterminated(true) no seu initialize()<<antes de entrar no SwingWorker>> e o setIndeterminated(false) no seu done()?

Ironlynx ,esqueci de falar que esse objeto que criei Loading barra = new Loading(); refere-se a outra classe que extende de um JDialog,por isso nao consigo fazer barra.setIndeterminate(boolean) na classe Interface(minha classe principal),mas acho estranho pois fiz o seguinte teste:tirei a JProgressBar e coloquei ao inves dela um JLabel qualquer no painel do JDialog e continuou não aparecendo ,o JLabel so apareceu apos o meu programa incializar por completo mas o JDialog apareceu junto com o principal vou colocar as fotos para ficar mais facil visualizar:

Apos clicar no jar executavel(o programa principal começando a carregar e o JDialog carregando mas seu conteudo não):
http://img110.imageshack.us/img110/9154/imagem1mh0.jpg

Apos meu programa carregar por completo tando a JProgressBar quanto o JLabel aparecem
*com a JProgressBar:
http://img209.imageshack.us/img209/3166/imagem2ng9.jpg

*com o JLabel de teste
http://i220.photobucket.com/albums/dd134/breno500as/imagem3.jpg

Muito estranho isso pois devia carregar o processo enquanto eu inicio o programa e nao depois quando conclui…Ironlynx se vc ainda tiver esse outro exemplo utilizando SplashScreen com a JProgressBar e puder passar,ou alguma dica de como resolver com SwingWorker…to meio sem ideia do que fazer para resolver essa demora na entrada do programa…
vlw []'s

Com esse SwingWorker novo eu não sei operar direito, só lendo a API e eu não tenho muito tempo agora(tenho que entregar um projeto na próxima semana),deve ter alguma besteirinha que tá passando.Não tô achandoo código do meu programa, mas dando uma googlada rápida, veio um código de um site francês:

[code]
import java.awt.event.;
import java.awt.
;
import javax.swing.*;

public class Splash{
JProgressBar progress;
Thread thread;

public static JFrame frame;

public static void main(String[] args){
new Splash(“Logo.gif”,“E.A.S.\u03A8 Version 1.0 Chargement…”,“icone.gif”);//Path de l’image qu’on veut ,message,ainsi que l icone de la fenetre
}
public Splash(String imgPath, String message,String icone){
frame = new JFrame(“Chargement”);
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(icone));//icone de la Jframe
JPanel panel = new JPanel();
panel.setBackground(new Color(124,125,235));//Couleur de fond du Panel
panel.setSize(450,250);
panel.setBounds(0,0,450,250);
JLabel texte =new JLabel(message);//Texte de la String
texte.setForeground(Color.ORANGE);
JLabel img = new JLabel();
img.setIcon(new ImageIcon(imgPath));
progress = new JProgressBar(0, 100);

        panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
              progress.setStringPainted(true);
                            
                   //ajout des éléments
                   panel.add(&quot;North&quot;,img);
                   panel.add(&quot;North&quot;,texte);
                   panel.add(&quot;East&quot;,progress); 
                   frame.getContentPane().add(BorderLayout.CENTER, panel);
	       frame.setSize(450,250);
               //Pour définir le Splash au milieu de l'écran'
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
            frame.setLocation((screen.width - frame.getSize().width)/2,(screen.height - frame.getSize().height)/2);
               // pour que ca ai vraiement l air d un splash :p
               frame.setUndecorated(true);
               frame.setVisible(true);
		frame.setResizable(false);
                    //Retaillage de la barre pour qu elle corresponde a la taille de la frame
		progress.setBounds(new Rectangle(10,220,430,20));
		// Création de thread pour afficher la progression de la barre
          thread = new Thread(new Progression());
          thread.start();
             //On peut ajouter un Thread d'une classe de traitement qui implemente un Runnable
            //et les switcher.                                                   
		}
public class Progression  implements Runnable{
		public void run(){
				for (int j = 1; j &lt; 100; j++){
						progress.setValue(j);
                        progress.setString(j+&quot; %&quot;);
						try{
						thread.sleep(40);//determination de la rapiditée de la frame
						}catch(Exception e){
                          e.printStackTrace();
                          frame.dispose();//en cas d' erreur pour pas rester bloqué sur le splash
						}
					}
              frame.dispose(); //fermeture de la frame lorsque le chargement est teminé                                                
			}
		}

}//fim da classe Splash [/code]
Que já dá para dar uma idéia.
Vc pode criar a sua própria thread que atualize a JProgressBar de tempos em tempos, até completar o tempo necessário para o startup da sua app.

Ironlynx ,ja vai ser de grande ajuda amigo!!!muito obrigado mesmo!!!
[]'s

Neste site tem uma classe splashscreen completa… e explica como executar… só é preciso de alguns tratamentos para funcionar do geito que vc necessita… ele pré define o tempo que irá carregar a jprogressbar.

http://www.jroller.com/fabiofalci/category/Java