JLabel não aparece

5 respostas
igor_jua

Pessoa estou inserindo um gif animado num JLabel e inicialmente seto sua visibilidade como false.
A intenção é que quando o usuário clique no botão eu sete sua visibilidade para true e a animação apareça.

O problema está justamente aí! Eu estou setando mas a imagem não aparece de jeito nenhum!

PS: estou utilizando uma thread pra fazer isto, mas nada acontece…

Aqui está minha thread

public void run(){
            while(!parar){//"parar" é uma variavel booleana que indica o funcionamento da thread
                if(status)//"status" é uma variavel boleana que indica quando a imagem deve fica visivel ou não
                java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                  jLabel5.setVisible(true);
                  System.out.println("mostraa imagem");//teste para ver se realmente ele entra na condição.
            //na verdade entra mas somente quando sai do método em quem eu faço MinhaThread.setStatus(true);
            }
        });
                else
                    java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                  jLabel5.setVisible(false);
            }
        });
        }
                try {
                    this.sleep(300);
                } catch (InterruptedException ex) {
                    Logger.getLogger(GuiInit.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            
    }

Eu a inicio no construtor da classe e quando preciso que a imagem apareça eu seto a variavel booleana "status " como true.

5 Respostas

Anime

Oi,

Por que não coloca no evento do botão…

jLabel5.setVisible(true);
igor_jua

Anime, não sei se vc entendeu meu código…mas estou fazendo exatamente isto!
Como estou tratando com algo animado, optei por trabalhar com uma Thread pra tentar evitar justamente este erro que está acontecendo!

Se eu fizesse como vc indicou, aí sim este erro seria compreendido pela minha parte.(pois somente isto não iria funcionar)!

Porém como estou trabalhando com uma Thread e a cada mudança de visibilidade eu faço também um pedido a Thread do swing para a mesma, não entendo o pq de não estar funcionando corretamente!

Alguém mais tem uma luz???

Anime

igor_jua:
Anime, não sei se vc entendeu meu código…mas estou fazendo exatamente isto!
Como estou tratando com algo animado, optei por trabalhar com uma Thread pra tentar evitar justamente este erro que está acontecendo!

Se eu fizesse como vc indicou, aí sim este erro seria compreendido pela minha parte.(pois somente isto não iria funcionar)!

Porém como estou trabalhando com uma Thread e a cada mudança de visibilidade eu faço também um pedido a Thread do swing para a mesma, não entendo o pq de não estar funcionando corretamente!

Alguém mais tem uma luz???

Entendi,mas não tinha entendido o por que… :stuck_out_tongue:

Realmente pensei que com gif animado não daria certo…

Espero que ajude…http://www.devdaily.com/blog/post/jfc-swing/use-animated-gif-image-in-jfc-swing-application/

ViniGodoy

Por que você chama setVisible(true) num loop?

Aliás, para que aquela thread?

igor_jua

Olá Vine, na tentativa de fazer funcionar fiz dessa maneira, tendo em vista que somente chamando o setVisible(true) dentro da THread do swing não dava certo.

Criado 7 de fevereiro de 2011
Ultima resposta 8 de fev. de 2011
Respostas 5
Participantes 3