Controle de ImageIcon em JLabel

Bom dia pessoal,

Estou tentando fazer um JApplet onde tenho que controlar imagens, algo semelhante como gifs. Para isso estou usando labels com ImageIcon que vou alterando conforme a necessidade. Estava indo tudo tranquilo quando se tratava de um led, com apenas dois estados (ligado e desligado) então quando ligado botava a imagem ligada na label e desligado a imagem deligada. Mas agora estou precisando fazer com uma hélice, onde a mesma possui vários estados e presido controlar sua velocidade que pode variar.

Para isso fiz o seguinte código:

     ...

    private ImageIcon[] imagens;
    private JLabel label;
    
    public MotorDePasso(){
        imagens = new ImageIcon[6];
        imagens[0] = new ImageIcon(getClass().getResource("/Imagens/MtPasso0.png"));
        imagens[1] = new ImageIcon(getClass().getResource("/Imagens/MtPasso1.png"));
        imagens[2] = new ImageIcon(getClass().getResource("/Imagens/MtPasso2.png"));
        imagens[3] = new ImageIcon(getClass().getResource("/Imagens/MtPasso3.png"));
        imagens[4] = new ImageIcon(getClass().getResource("/Imagens/MtPasso4.png"));
        imagens[5] = new ImageIcon(getClass().getResource("/Imagens/MtPasso5.png"));
        
        label = new JLabel(imagens[0]);
        this.setLayout(new BorderLayout());
        this.setSize(20, 20);
        this.add(label);
    }
    
    public void start(){
        for(int x = 0; x< numPassos; x++){
            try {
                Thread.sleep(speed*10);
            } catch (InterruptedException ex) {
                Logger.getLogger(MotorDePasso.class.getName()).log(Level.SEVERE, null, ex);
            }
            label.setIcon(getNextIcon());
        }
    }

    ...

só que o mesmo não funciona, quando boto este Panel no Applet ele só aparece, já parado, quando termina o loop do método start().

Não sei o que pode estar acontecendo. Alguém pode me ajudar? Talvez um outro modo de fazer isso?

Obrigado
Matias Schimuneck

Fazendo mais alguns teste vi que o problema esta no sleep, entretanto não posso removelo, preciso dele para controlar a velocidade do gif, e sem ele o gif faz todas as mudanças de uma única vez, sem nem dar para perceber sua alteracao.

Tentei usar o wait() em vez do sleep mas ainda não consegui sucessor.

No aguardo de alguma ajuda.