Pequeno inconveniente swing

O problema é o seguinte: como evitar o carregamento precoce do JFrame antes dos Componentes?

O que está acontecendo é o seguinte, quando crio uma aplicação GUI, a janela carrega antes dos componentes, ou seja, ele mostra a janela e depois de um certo tempo mostra os Componentes (+/- 1s).

E isso se agrava mais ainda quando executo a aplicação java pela primeira vez. Tem como atrasar a exibição da janela, isto é, mostrá-la depois que os componentes já estiverem criados?

Como você faz pra mostrar o Frame?? Com setVisible(true);???

Se for, tenta colocar essa linha depois que todos os componentes já foram carregados no Frame.

Não sei se pode ser isso, mas é uma tentativa.

manda o código pra gente dar uma olhada…

:idea:

O código é esse:

import javax.swing.*;
import java.awt.*;

public class Cadastro extends JFrame
{
  // Construtor da classe "Cadastro".

  public Cadastro()
  {
  	super("Cadastro");
  	
  	setDefaultCloseOperation(EXIT_ON_CLOSE);
  	setResizable(false);
  	setLocation(100, 100);
  	
  	initComponents();
  	pack();
  }
  
  // Método de criação de componentes.
  
  private void initComponents()
  {
    JPanel PnCadastro = new JPanel(new GridBagLayout());

    GridBagConstraints c = new GridBagConstraints();

    c.gridx  = 0;
    c.anchor = GridBagConstraints.WEST;

    // Criando rótulos de texto...

    String[] LbCampos = {
                         "Nome","Endereço","Bairro","Cidade","UF",
    	                 "CEP","Telefone"
    	                };

    int count = LbCampos.length;
    
    for (int i = 0; i < count; i++)
    {
      c.gridy = i;
      PnCadastro.add(new JLabel(LbCampos[i]), c);
    }
    
    // Criando os campos do formulário...

    c.gridy = 0;
    c.gridx++;
    c.ipadx = 250;
    c.insets = new Insets(2, 10, 0, 0);
    
    PnCadastro.add(CpNome, c);
    
    c.gridy++;
    
    PnCadastro.add(CpEndereco, c);
    
    c.gridy++;
    c.ipadx = 150;
    
    PnCadastro.add(CpBairro, c);
    
    c.gridy++;
    
    PnCadastro.add(CpCidade, c);
    
    c.gridy++;
    c.ipadx = 5;
    
    String[] Uf = {
    	           "AC","AL","AM","AP","BA","CE","DF","ES","GO",
    	           "MA","MG","MS","MT","PA","PB","PE","PI","PR",
    	           "RJ","RO","RR","RS","SC","SE","SP","TO"
                  };

    CpUf = new JComboBox(Uf);
    
    PnCadastro.add(CpUf, c);
    
    c.gridy++;
    c.ipadx = 90;
    
    PnCadastro.add(CpCep, c);
    
    c.gridy++;
    
    PnCadastro.add(CpTel, c);

    int[] SzCampos = {250,250,150,150,5,80,80};
    
    JPanel PnPrincipal = new JPanel(new GridBagLayout());
    
    c.gridx = c.gridy = c.ipadx = 0;
    c.anchor = GridBagConstraints.CENTER;
    c.insets = new Insets(10, 10, 10, 10);
    
    PnPrincipal.add(PnCadastro, c);

    getContentPane().add(PnPrincipal);
  }
  
  public static void main(String[] args)
  {
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        new Cadastro().setVisible(true);
      }
    });
  }
  
  // Declarações.

  JTextField CpNome     = new JTextField();
  JTextField CpEndereco = new JTextField();
  JTextField CpBairro   = new JTextField();
  JTextField CpCidade   = new JTextField();
  JTextField CpCep      = new JTextField();
  JTextField CpTel      = new JTextField();
  JComboBox  CpUf;
}