dúvida de splash screen e thread

Boa tarde pessoal!!!

Li o artigo do Rafael Steil (http://www.guj.com.br/java.tutorial.artigo.25.1.guj) para criar uma splash screen, mas fiquei com uma dúvida…

para rodar a splash screen preciso criar uma thread?
tipo, implementei no meu sistema e com o looping do exemplo e funciona, mas quando coloco para abrir minha aplicação real, a imagem do splash screen não chega a aparecer na tela (fica apenas o formato da splash em branco e depois aparece a aplicação).
Meu método main está mais ou menos assim:

[code]public static void main(String[] args) {

Global.verificarVersaoDaVM(); 
    
   
    SwingUtilities.invokeLater(new Runnable() {
   		public void run() {

		try {
			Splash.getInstance().openSplash();
			ResourceFile rscfile = new ResourceFile("nl.weev.adminexpress.resources.RSC");
			Global.setResource(rscfile);
			InterfaceBuilder.setResourceFile(rscfile);
				
			Fachada fachada = new Fachada();
			Global.setFacade( fachada );					
			Global.setMainFrame( new FramePrincipal( fachada ) );
				
			CAppearence aparencia = new CAppearence(Global.getMainFrame());
			aparencia.setLookAndFeel(new Plastic3DLookAndFeel());
			
			Global.getMainFrame().setVisible(true);
			Splash.getInstance().finish();

		} catch (FileNotFoundException fnfex) {
			InterfaceBuilder.showException(null, fnfex);
			fnfex.printStackTrace();
		}					
		}
    });

}[/code]
Será que alguém podia me ajudar…???

brigadão!

Para o splash screen aparecer basta coloca-lo para rodar em uma Thread.

A forma mais básica de resolver isso basta criar uma classe que implemente a interface Runnable (ou coloque em em uma classe anônima, particularmente eu não gosto) dentro do método run() coloque a lógica para carregar o splash screen.

Depois, basta instanciar uma Thread passando como argumento de seu construtor a classe que implementa o seu Runnable, depois chame o método start() da sua Thread.

[]s

Bom dia!!

Na verdade ainda não entendi :S
Já estou chamando a splash dentro de uma thread
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Devo criar outra thread e chamá-la dentro da SwingUtilities.invokeLater?

Obrigada

Ok,

Eu resolvi colocando Splash.getInstance().openSplash(); fora de SwingUtilities.invokeLater, coloquei direto no método main e Splash.getInstance().finish(); coloquei no bloco finally. Funcionar, funcionou, mas conceitualmente está correto?
Obrigada.

[code]public static void main(String[] args) {
Global.verificarVersaoDaVM();
Splash.getInstance().openSplash();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {

				ResourceFile rscfile = new ResourceFile("nl.weev.adminexpress.resources.RSC");
				Global.setResource(rscfile);
				InterfaceBuilder.setResourceFile(rscfile);
				
				Fachada fachada = new Fachada();
				Global.setFacade( fachada );					
				Global.setMainFrame( new FramePrincipal( fachada ) );
				
				CAppearence aparencia = new CAppearence(Global.getMainFrame());
        			aparencia.setLookAndFeel(new Plastic3DLookAndFeel());
				
    				Global.getMainFrame().setVisible(true);
                
			} catch (FileNotFoundException fnfex) {
				InterfaceBuilder.showException(null, fnfex);
				fnfex.printStackTrace();
			} finally {
                			Splash.getInstance().finish();
            		}					
		}
    });

}[/code]