Cronometro regressivo

1 resposta
R

Olá pessoal, por favor estou precisando de uma força para fazer um contador regressivo de uma data fixa, começando da data atual.

Preciso de um contador de segundos, minutos, horas e dias, mas o total

ex: dias=1430
horas=34325
minutos=2059500
segundos=123570054

e eu só estou conseguindo assim: 335:05:04:54

Agradeço desde já!!!

import java.awt.EventQueue;  
import java.awt.FlowLayout;  
import java.text.DateFormat;  
import java.text.SimpleDateFormat;  
import java.util.Date;
import java.util.GregorianCalendar; 

import java.text.ParseException; 
  
import java.util.Date;   
  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
  
public class MyFrame extends JFrame {  
    // Local onde atualizaremos a hora  
    private JLabel lblHora; 
	  
  
    // Formatador da hora  
    private static final DateFormat FORMATO = new SimpleDateFormat("HH:mm:ss");  
  

    public MyFrame() {  
        // Construímos nosso frame  
        super("Exemplo");  
        setLayout(new FlowLayout());  
        getContentPane().add(getLblHora());  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        setSize(200, 75);  
        setVisible(true);  
  
        // Iniciamos a thread do relógio. Tornei uma deamon thread para que seja  
        // automaticamente finalizada caso a aplicação feche.  
        Thread clockThread = new Thread(new ClockRunnable(), "Clock thread");  
        clockThread.setDaemon(true);  
        clockThread.start();  
    }  
  
    private JLabel getLblHora() {  
        if (lblHora == null) {  
            lblHora = new JLabel();  
        }  
        return lblHora;  
    }  
  
    /** 
     * Método para atualizar a hora no formulário. Não é thread-safe, portanto, 
     * se o utilizado fora da thread da AWT, deve-se utilizar um dos comandos da 
     * EventQueue (invokeLater ou invokeAndWait). 
     */  
    public void setHora(Date date) {  
       // getLblHora().setText(FORMATO.format(date));
		 String T2= "07/06/2014"; 
		 
		 GregorianCalendar calendar = new GregorianCalendar(); 
 date = calendar.getTime();

SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 
formatador.format(date); 
 Date d2 = new Date();
try{ 
d2 = formatador.parse(T2); }
catch(ParseException pe) {}


long dias = (d2.getTime()-date.getTime());
getLblHora().setText(FORMATO.format(dias));
long horas = (d2.getTime()-date.getTime());
getLblHora().setText(FORMATO.format(horas));
long min = (d2.getTime()-date.getTime());
getLblHora().setText(FORMATO.format(min));
long seg = (d2.getTime()-date.getTime());
getLblHora().setText(FORMATO.format(seg));


     
  }
    /** 
     * Runnable que contém o código que atuará na nossa thread. Basicamente, ele 
     * chama o método setHora de segundo em segundo, passando a data atual. 
     */  
    private class ClockRunnable implements Runnable {  
        public void run() {  
            try {  
                while (true) {  
                    // Aqui chamamos o setHora através da EventQueue da AWT.  
                    // Conforme dito, isso garante Thread safety para o Swing.  
                    EventQueue.invokeLater(new Runnable() {  
                        public void run() {  
                            // Só podemos chamar setHora diretamente dessa  
                            // forma, pois esse Runnable é uma InnerClass não  
                            // estática.  
                            setHora(new Date());  
                        }  
                    });  
                    // Fazemos nossa thread dormir por um segundo, liberando o  
                    // processador para outras threads processarem.  
                    Thread.sleep(1000);  
                }  
            }  
            catch (InterruptedException e) {  
            }  
        }  
    }  
  
    public static void main(String args[]) {  
        new MyFrame();  
    }  
}

1 Resposta

Eder_Peixoto

Qual a dúvida?

Criado 7 de julho de 2010
Ultima resposta 8 de jul. de 2010
Respostas 1
Participantes 2