Alterna imagem no label a um instante de tempo

3 respostas
vanessa.tenorio

Pessoal, estou com uma grande dúvida :frowning:

Como posso alterar uma imagem em um jLabel a cada meio segundo?

Pensei em fazer do modo abaixo, mas como estou trabalhando com muitas imagens, elas não estão sincronizando a alternância nos n-jLabel que possuo. Podem me ajudar?

while (true) {
          ImageIcon imagem;
         imagem = new ImageIcon(getClass().getResource("/br/com/tel/imagens/LED_Verde_peq_Ligado.png"));
        jLabelPrimeiroLugarParabensLED.setIcon(imagem);

       Thread.sleep(500);

        imagem = new ImageIcon(getClass().getResource("/br/com/tel/imagens/LED_Verde_peq_Apagado.png"));
        jLabelPrimeiroLugarParabensLED.setIcon(imagem);

Obs: destaco que tenho vários label’s, mas dei o exemplo de um único label.

Desde já, muito obrigada!!!

3 Respostas

R

Sugiro usar um timer:
http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
http://www.java2s.com/Tutorial/Java/0240__Swing/Fontsizeanimation.htm
Através da Action registrada no timer, você poderá atualizar todos os seus Labels num único local.

vanessa.tenorio

roger_rf,
você poderia me ajudar a aplicar o timer para o meu problema? Desculpas, mas não estou compreendendo como devo usá-lo.

Grata!!!

dyeimys

Boa noite vanessa.tenorio,
Explique mais o que tem que ser feito neste Sistema que posso te dar um auxilio melhor, queria entender o que ele ira fazer, mas pelo que vi pode ser vários leds(Estou errado?), eu indicaria você a fazer sua própria JLabel e implementar Runnable.
Algo como isto.

/**
 *
 * @author DyeimysFranco
 */
public class GuJ extends JLabel implements Runnable {

    private ImageIcon img1 = new ImageIcon(getClass().getResource("Imagem 1"));
    private ImageIcon img2 = new ImageIcon(getClass().getResource("Imagem 2"));

    public GuJ() {
        //Configurações de sua Label

        //Instanciando e Iniciando a Thread
        Thread th = new Thread(this);
        th.start();

    }

    /**
     * Metodo que seta a Imgamte
     *
     * @param img Entra com a imgem a ser clocada
     */
    public void setImg(ImageIcon img) {
        this.setIcon(img);
    }

    @Override
    public void run() {

        while (true) {
            ImageIcon img;            
            //Verificando qual é a imgem que está como Icon
            if (this.getIcon().equals(img1)) {
                img = img2;
            } else {
                img = img1;
            }//Fim da verificação
            try {
                Thread.sleep(500);
                setImg(img);
            } catch (InterruptedException ex) {
                Logger.getLogger(GuJ.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }
}

Está ai algumas dicas, se explicar melhor o que precisa é só falar.
DICA: Eu ao invés de usar imagens em JLabel, usaria o DrawImge do Graphics2D em um Componente

Criado 17 de setembro de 2012
Ultima resposta 18 de set. de 2012
Respostas 3
Participantes 3