Animação não atualiza

2 respostas
luistiagos

É o seguinte tenho um app swing qdo o usuario clica no botão gerar arquivo é acionado um sprite com uma animação esta animação consiste na seguinte classe:

package br.com.stcruz.pfat.atividade.utils;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class AnimateIconLabelWraper extends Thread {
		
	private JLabel label;
	private ImageIcon []ImgIcons;
	private long timeInterval;
	
	public AnimateIconLabelWraper(JLabel label, ImageIcon []imgIcons, long timeInterval) {
		this.label = label;
		this.ImgIcons = imgIcons;
		this.timeInterval = timeInterval;
	}
	
	public AnimateIconLabelWraper(JLabel label, ImageIcon []imgIcons) {
		this(label, imgIcons, 500);
	}
	
	private void trocaFastIcon() {
		
		int count = 1;
		
		while (true) {
			try {
				if (count == ImgIcons.length) {
					  count = 0;
				  }
				label.setIcon(ImgIcons[count++]);	
				Thread.sleep(timeInterval);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public void run() {
		trocaFastIcon();
	}
}

minha app tem 3 JPanel um de formularios, outro de botões e outro contendo a minha animação que inicialmente não é visivel… qdo o usuario clicar em gerar arquivo a app esconde os outros panel, inicia a Thread passando o array de imagens, o tempo e o JLabel e mostra o que tem a animação…
e qdo termina o processo ele faz o processo inverso… mas o problema e que a app não exibe a animação…
se eu não chamar o metodo de terminar o processo a animação executa normalmente mas ao eu chamar o metodo de terminar o processo (o qual e executado qdo o arquivo ja foi gerado pra voltar a tela e esconder a animação) a animação nem roda, a imagem nem sequer aparece…
alguem sabe oq pode estar ocorrendo?

2 Respostas

luistiagos

basicamente percebi o seguinte problema:

se eu fizer:

botao.setEnabled(false);

try {
                        Thread.sleep(5000);
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                botaoConfirmar.setEnabled(true);

sendo que botao e uma variavel de instancia ele não desabilita…

victorwss

Tenta sobrescrever o método paintComponent(java.awt.Graphics) que acho que você vai ser bem mais feliz nisso.

Criado 8 de abril de 2008
Ultima resposta 8 de abr. de 2008
Respostas 2
Participantes 2