Pessoal, estou com um problema para inciar a minha tela de splash de minha aplicação. A Classe principal (bolaoJFrame) que estende JFrame e chama a tela de logon que estende JDialog. Depois de validado o usuário eu tento chamar a tela de splash, que deveria rodar enquanto todo o processo de carregamento da principal e feito, mas isso não acontece. Na verdade a tela de splash, só aparece depois que a tela principal aparece e já foi toda carregada. 
Alguém pode me dar uma luz de como fazer a tela de splash aparecer depois que o usuário é validado? 
Método main da classe principal da aplicação: 
 public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(bolaoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(bolaoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(bolaoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(bolaoJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                
                bolaoJFrame principal= new bolaoJFrame();
                principal.setLocationRelativeTo(null);
                login = new loginJDialog(principal, true);
                if(newUser==true){
                    CardLayout cards = (CardLayout)(principal.jpPrincipal.getLayout());
                    cards.show(principal.jpPrincipal, "cadastro");
                }else{
                    if(Usuario.userCriado==0){
                        System.exit(0);
                    }else{
                        
                        Splash telaSplash =new Splash(null);
                        telaSplash.setVisible(true);
                        
                        CardLayout cards = (CardLayout)(principal.jpPrincipal.getLayout());
                        cards.show(principal.jpPrincipal, "apostas");
                        principal.jLabel1.setText("Bem vindo " + user.getUsername());
                        principal.jLabel4.setIcon(new Util().dimencionaImagem(user.getFoto(),80));
                        HoraDoSistema.start(principal.retomaHora(),principal.lbRelagio);
                        principal.montaCards();
                        PanelRanking pr = new PanelRanking(10, 1, user.getUserCod());
                        
                        principal.jpRanking.add(pr,"1");
                        if(pr.getPosUser()>0){
                           principal.lbRankingInfo.setText("Sua posição atual é " + pr.getPosUser() + "º" ); 
                        }
                        if(pr.getPontuacaoUser()>0){
                           principal.lbPontuacaoInfo.setText("Você fez " + pr.getPontuacaoUser()+ " pontos" ); 
                        }                        
                        principal.lbNext.requestFocus();
                        principal.verificaDisponibilidad();
                    }
                }
 
              principal.setVisible(true); 
              
                
            }
        });
    }
classe da tela de splash: 
public class Splash extends JWindow {
    private JProgressBar barraDeProgresso;
    public Splash(JFrame owner) {
        //super(owner);
        setLayout(null);
        Util.centralizarJanela(this, 521, 335);
        inicialize();
    }
    public void inicialize(){
        JLabel fundo = new JLabel();
        //fundo.setLocation(new Point(0,0));
        fundo.setIcon(new ImageIcon(getClass().getResource("/Principal/splash.png")));
        fundo.setSize(521, 315);
        add(fundo);
        barraDeProgresso= new JProgressBar();
        barraDeProgresso.setBackground(Color.red);
        barraDeProgresso.setBounds(0, 315, 521, 20);
        barraDeProgresso.setStringPainted(true);
        add(barraDeProgresso);
    }
    public void setValorBarraDeProgresso(int progresso){
        barraDeProgresso.setValue(progresso);
    }
    public int getValorBarraDeProgresso(){
        return barraDeProgresso.getValue();
    }
}
Obrigado