Gif animado em Jframe

Galera sou novo aqui e estou com um problema que não consigo entender. Em meu TCC tenho um frame, dentro deste frame eu tenho um JLabel com um gif animado nela. Eu chamo esse frame entes de chamar um método, dai enquanto esse método é executado, a gif animada indica que esta havendo processamento, só que a gif só aparece quando o método termina seu trabalho. O frame ate aparece enquanto o método é executado mas a gif só aparece quando ele termina. É como se o método que eu chamo depois do frame tivesse mais importância do que a execução da gif que foi chamada primeiro. O que poderia ser?

Abaixo segue o trecho do código:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

try {

Analisando2 analis = new Analisando2(); // Obeto que contem o frame com a Gif animada.

// a gif tem que aparecer dai pra baixo.

PlanarImage picture = JAI.create(“fileload”, “c:/Imagens/particulas.jpg”);

Imagem um = new Imagem (picture);
um.binarize();
Filtro filtro1 = new Filtro(“c:/Outputbin/Binarizada.bmp”);
filtro1.Mediana();
filtro1.eliminaBordas();
File file1 = new File(“c:/Outputbin/Filtrada2.bmp”);
BufferedImage picture2 = ImageIO.read(file1);
Contador cont1 = new Contador(picture2);
quantidade = cont1.contaParticulas();

// a gif só aparece deste ponto em diante

textField1.setText(String.valueOf(quantidade));

jButton3.setEnabled(true);
} catch (IOException ex) {
Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);

}

}

public class Analisando2 {

JFrame frame = new JFrame();

public Analisando2(){

Icon ico = new ImageIcon(“icones/xpto.gif”);
JLabel label = new JLabel(ico);

frame.getContentPane().add(label);
frame.setSize(101,101);
frame.setUndecorated(true); // tira a borda superior com os três botões do windows
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

}

}

Comece por aqui: http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Isso ocorre porque provavelmente o player do GIF é disparado numa thread secundária.

Cara mas eu não estou usando Threads.

Não que você tenha disparado diretamente.
Quando você usa o construtor do ImageIcon, ele usar a carga através do MediaTracker, que gerencia uma thread.

Na verdade, é pouco provável que sua aplicação não tenha pelo menos 3 threads rodando. Se você executar no debugger no Netbeans ou do Eclipse, ou no Visual VM, poderá vê-las.

Ok, mas vc disse que o gif só está rodando depois que o método termina seu trabalho pq provavelmente ele está rodando em uma thread secundária, mas como eu faço pra ele rodar na thread primaria?

Você não poderia. Se você fizer isso, seu método vai travar até o gif parar de rodar, coisa que não acontece.