Gif animado em JFrame

4 respostas
L

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?

4 Respostas

D

Você usa threads? Deixe mais informações, poste partes do seu código fica difícil adivinhar como você está fazendo

L

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);  
    
}

}

A

Se você ainda tiver com esse problema tenta desse jeito:

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

Runnable run = new Runnable() {
	@Override
	public void run() {
		Analisando2 analis = null;
		try { 

			analis = new Analisando2(); // Obeto que contem o frame com a Gif animada. 
			analis.setVisible(true);
			// 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); 

		}finally{
				analis.dispose();
					} 


	}

}; new Thread(run).start();

}

public class Analisando2 extends JFrame {

public Analisando2(){
	setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
			
	setResizable(false);
	getContentPane().setLayout(null);
	JLabel lblImagem = new JLabel("", JLabel.CENTER);

	try {
		ImageIcon icon = new ImageIcon("icones/xpto.gif");
		lblImagem.setIcon(icon);

	} catch (Exception e) {
		e.printStackTrace();
	}
	lblImagem.setBounds(0, 0, 90, 90);
	getContentPane().add(lblImagem);

	setSize(101, 101);
	setLocationRelativeTo(null);
	update();

}

private void update(){
	update(getGraphics());
}

}

alisson_belinki

,

Criado 5 de janeiro de 2012
Ultima resposta 2 de mai. de 2014
Respostas 4
Participantes 4