Como fazer Contagem regressiva? [RESOLVIDO]

9 respostas
pedroroxd

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…

9 Respostas

jpcasati

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

E

Use um javax.swing.Timer.

pedroroxd

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

kenneth

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:

pedroroxd

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…

tiagobernardo32

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.

pedroroxd

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

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...

Marky.Vasconcelos
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.

pedroroxd

Opa…
Valew ae…
Resolvido :smiley:

Criado 23 de setembro de 2009
Ultima resposta 23 de set. de 2009
Respostas 9
Participantes 6