Timer para alterar imagem

1 resposta
W
Bom dia. Tenho uma aplicação swing desenhada num border layout. A parte principal, com a interação do usuário, encontra-se na parte center e na parte south há uma imagem. Gostaria que essa imagem fosse alterada a cada 3 segundos, para isso criei um:
Timer timer = new Timer();
e faço uma chamada à innerclass AlteraImg da seguinte forma:
timer.schedule(new AlteraImg(), 0, (3*1000));
as imagens estão na pasta "Imagem" no desktop e todas tem o nome img1.jpg, img2.jpg, img3.jpg, etc.

estou recebendo oseguinte erro na classe AlteraImg:
mas recebo o erro:

Exception in thread "Timer-1" java.lang.NullPointerException
	at br.com.csv.alertapendencia.view.CaixaAlta$AlteraImg.proxImg(CaixaAlta.java:395)
	at br.com.csv.alertapendencia.view.CaixaAlta$AlteraImg.run(CaixaAlta.java:415)
	at java.util.TimerThread.mainLoop(Unknown Source)
	at java.util.TimerThread.run(Unknown Source)
Porque esse erro ocorre ? Tentei procurar neste forum e em outros, mas nenhum dos erros parecidos pareceram ter algo a ver com o meu. Quem puder ajudar. o código da innerclass é o seguinte:
private static class AlteraImg extends TimerTask{
		
		private static void proxImg(){
			z++;
			String pathImg = "c:\\Documents and Settings\\Desktop\\Imagem\\img"+z+".jpg";
			lbImg.setIcon(new javax.swing.ImageIcon(pathImg));
			lbImg.repaint();
			List<ImgBean> listaimg = new ArrayList<ImgBean>();
			listaImg = ImgDAO.listaImg();
			if(z == listaImg.size()-1)
				z = 0;
		}

		public void run() {
			proxImg();
		}
	}
Alguém pode me ajudar ? Obrigado

1 Resposta

CristianPalmaSola10

Porque voce não cria uma classe que estende da classe Thread, acho que fika melhor
aqui tenho um exemplo de implementação de uma classe que extende da classe Thread

/**
 * @author cristian.urbainski
 */
public class ThreadIncrmentaHora extends Thread{

    public String hora = new String();
    public JTextField text;

    public ThreadIncrmentaHora(JTextField t)
    {
        this.text = t;
    }

    @Override
    public void run(){
        while(true)
        {
             SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
             this.hora = formatter.format(new Date());
             text.setText(hora);
             text.repaint();

                try {
                   Thread.sleep(1000);
              } catch (Exception e) {
             }
        }
       
    }
Criado 6 de fevereiro de 2012
Ultima resposta 6 de fev. de 2012
Respostas 1
Participantes 2