Controle de ImageIcon em JLabel

1 resposta
Schimuneck

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

1 Resposta

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.

Criado 30 de novembro de 2011
Ultima resposta 2 de dez. de 2011
Respostas 1
Participantes 1