GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como fazer Contagem regressiva? [RESOLVIDO]


#1

Pessoal, eu quero fazer uma contagem regressiva de 30 segundos...
Uma jLabel vai ficar rebendo.. (30,29,28,27) até o 0...
Como faço isso?
Não sei nem por onde começar... (Como que eu implementaria para realizar determinada função de 1 em 1 segundo?)
Alguém pode me dar uma luz?
Vlw...


#2

Regreciva não sei, sei que regressiva pode usar Thread.sleep().


#3

Use um javax.swing.Timer.


#4

Alguém tem um exemplo ae?
nunca usei essas coisas :frowning:


#5

Fala garoto..
Procurei no forum, e achei este post, que utiliza o Timer:

http://www.guj.com.br/posts/list/139091.java

Blz?

Valeu, abraco!
:stuck_out_tongue:


#6

O link que você me passou é de pegar a hora do sistema..
E o código do cara tá todo confuso, que nem ele entende...
Dentro do código tem Quote, dentro do Quote tem Code...
Além disso, ele não posto a parte do incremento...


#7

Fala pedroroxd

http://www.guj.com.br/posts/list/52964.java#279083

Neste post tem como pegar a hora do sistema... Tem 3 exemplos nele...

Usando Thread
Usando Timer do pacote Swing
Usando Timer do pacote Util.

É só adaptar para a sua necessidade.


#8

Thiago bernardo? Santa Rita do Sapucaí?
Eita.. o mundo é pequeno mesmo! :wink:

Bom...

           private class ClockRunnable implements Runnable {
           public void run() {
               try {
                   while (true) {
                       EventQueue.invokeLater(new Runnable() {
                           public void run() {                              
                           }
                       });
                       Thread.sleep(1000);
                       int t=30;   // NAO EH AKI!                    
                       busaka(t);
                   }
               }
               catch (InterruptedException e) {
               }
           }
       }

Beleza... de um em 1 segundo ele vai chamar o busaka:

           public void busaka (int t) {
            t=t-1;
            String k = Integer.toString(t);
            jLabel1.setText(k);
       }

Mas no caso, toda hora o valor de t vai receber 30, o que vai fazer a jLabel1 ficar sempre no 29...
Como faço para a variável t ser "global"?
Eu declaro era em algum lugar diferente?
Vlw...


#9

          private class ClockRunnable implements Runnable {
           public void run() {
               try {
                   int t=30;   // EH AKI!  
                   while (true) {
                       EventQueue.invokeLater(new Runnable() {
                           public void run() {                              
                           }
                       });
                       Thread.sleep(1000);                  
                       busaka(t--);
                   }
               }
               catch (InterruptedException e) {
               }
           }
       }

E o busaka não precisa diminuir 1.

E voce ainda pode fazer o while(t >= 0)
Por que se não ele nunca vai parar e continuar nos negativos.


#10

Opa..
Valew ae..
Resolvido :smiley:


#11