Criar um JLabel que pisca pra chamar atenção. Como?

4 respostas
J

Boa Noite :slight_smile:
Está é minha primeira participação no guj,
já o utilizei para tirar dúvidas várias vezes pesquisando,
mas uma coisa que eu to querendo, não encontrei em lugar nenhum de uma forma mais simples.
Que é criar um JLabel que fica piscando, não tenho conhecimento avançado em java,
mas queria colocar no meu trabalho da faculdade, já tentei com laços de repetição de diversas formas, mas nada.
Quem tiver uma solução que possa me ajudar agradeceria muito.

4 Respostas

E

Seja bem vindo ao GUJ.

Achei uma ideia interessante e resolvi brincar um pouco para tentar achar uma solução. Não sei se ficou da maneira mais correta ou mais fácil, mas deve servir para dar uma ideia. Basicamente seria uma thread que chama o método setVisible da label.

Thread thread = new Thread(new Runnable() { public void run() { try { while (true) { EventQueue.invokeLater(new Runnable() { public void run() { labelAlerta.setVisible(!labelAlerta.isVisible()); } }); Thread.sleep(1000); //Tempo em milisegundos para exibir e ocultar a label } } catch (InterruptedException ex){ ex.printStackTrace(); } } }); thread.setDaemon(true); thread.start();
Falou…

F
acredito que um metodo mais simples e claro, seria utilizando Timer... segue minha proposta;
public void piscandoLabel(int seconds) {
        Timer timer = new Timer();
        timer.schedule(new RemindTask(),0, seconds*500);
    }

    class RemindTask extends TimerTask {
        public void run() {
            if (true) {
                SEU_LABEL.setVisible(!SEU_LABEL.isVisible());
            }
        }
    }
Basta você alterar "SEU_LABEL" por o nome do teu JLabel, e chamar "piscandoLabel(1)" com o tempo de intervalo entre cada piscada por parametro, neste caso 1 seg. Caso você queira parar o timer, basta criar o timer fora...
Timer timer;
e alterar a linha;
// Timer timer = new Timer();
// para
timer = new Timer();
e definir o metodo;
public void timerStop(){
        timer.cancel();
        SEU_LABEL.setVisible(true);
    }
Abraço, espero ter ajudado.
E

FabioQuintana:
acredito que um metodo mais simples e claro, seria utilizando Timer…
segue minha proposta;

class RemindTask extends TimerTask { public void run() { if (true) { SEU_LABEL.setVisible(!SEU_LABEL.isVisible()); } } }


Tinha esquecido do método isVisible. hehe

Coloquei no meu post lá em cima.

Falou…

J

Demorei pra responder, hehe.
Obrigado a todos.
Eric Yuzo a forma como vc fez deu certo para o que eu queria.
E a do Fabio ta legal também, mas não funcionou não sei pq.

Criado 19 de setembro de 2010
Ultima resposta 11 de dez. de 2010
Respostas 4
Participantes 3