Cronometro

3 respostas
javolatra

Boa tarde pessoal

Preciso criar um cronometro no java, que assim que o usuario click no botao iniciar, o cronometro dispare H:M:S, como eu faco isso???

Valeu pela ajuda!!! :slight_smile:

3 Respostas

Alexandre_Saudate
  1. Framework Quartz
  2. classe TimerTask

[]´s

fredsilva.sistemas
Encontrei este código aqui no fórum a um tempo atrás. Não me lembro quem foi o autor:
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Contador extends Thread {

    private JLabel hr;

    public Contador(JLabel hora) {
        this.hr = hora;
    }

    @Override
    public void run() {
       try {
           int segundo = 0;
           int hora = 0;
           int minuto = 0;
           while( true ) {
               if( PrincipalTela.isContador() ) {
                   if( PrincipalTela.isZerado() ) {
                       segundo = 0;
                       hora = 0;
                       minuto = 0;
                       PrincipalTela.setZerado(false);
                   }

                   if( segundo == 59 ){
                       segundo = 00;
                       minuto = minuto+1;
                   }

                   if( minuto == 59 ){
                       minuto = 00;
                       hora = hora+1;
                   }
                   segundo++;
                   String timer = completaComZero(hora) + ":" +
                                  completaComZero(minuto) + ":" +
                                  completaComZero(segundo);
                   this.hr.setText(timer);
                   this.hr.revalidate();

                   if (minuto == 10){
                       JOptionPane.showMessageDialog(null, "Tempo esgotado!", "Aviso",JOptionPane.INFORMATION_MESSAGE);
                   }
               }
               Thread.sleep(1000);
           }
       } catch (InterruptedException ex) {
           ex.printStackTrace();
       }

    }

    private String completaComZero(Integer i) {
        String retorno = null;
        if( i < 10 ) {
            retorno = "0"+i;
        } else {
            retorno = i.toString();
        }
        return retorno;
    }


}
import java.awt.event.ActionEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class PrincipalTela extends JFrame {

    private static final long serialVersionUID = 1L;

    private static boolean contador = false;
    private static boolean zerado = false;
    private JButton iniciar;
    private static JLabel lConta;
    private JPanel mainPanel;
    private JButton pausar;
    private JButton zerar;

    public static void main(String[] args) {
        new PrincipalTela().montaTela();
        Contador cont = new Contador(lConta);
        cont.start();
    }

    private void montaTela(){
        this.setTitle("Cronometro");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(240, 120);
        this.setLocationRelativeTo(null);

        mainPanel = new javax.swing.JPanel();
        lConta = new javax.swing.JLabel();
        iniciar = new javax.swing.JButton();
        pausar = new javax.swing.JButton();
        zerar = new javax.swing.JButton();

        mainPanel.setName("mainPanel"); // NOI18N

        lConta.setText("00:00:00"); // NOI18N
        lConta.setName("lConta"); // NOI18N

        iniciar.setText(">"); // NOI18N
        iniciar.setName("iniciar"); // NOI18N
        iniciar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                iniciarActionPerformed(evt);
            }
        });

        pausar.setText("ii"); // NOI18N
        pausar.setName("pausar"); // NOI18N
        pausar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pausarActionPerformed(evt);
            }
        });

        zerar.setText("zerar"); // NOI18N
        zerar.setName("zerar"); // NOI18N
        zerar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                zerarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lConta, javax.swing.GroupLayout.DEFAULT_SIZE, 273, Short.MAX_VALUE)
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addComponent(iniciar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE)
                        .addComponent(pausar)
                        .addGap(32, 32, 32)
                        .addComponent(zerar)))
                .addContainerGap())
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lConta)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(iniciar)
                    .addComponent(zerar)
                    .addComponent(pausar))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        this.add(mainPanel);
        this.setVisible(true);
    }

    private void iniciarActionPerformed(ActionEvent evt) {
        contador = true;
        iniciar.setEnabled(false);
        pausar.setEnabled(true);
        zerar.setEnabled(false);
    }

    private void pausarActionPerformed(ActionEvent evt) {
        contador = false;
        iniciar.setEnabled(true);
        pausar.setEnabled(false);
        zerar.setEnabled(true);
    }

    private void zerarActionPerformed(ActionEvent evt) {
        contador = false;
        lConta.setText("00:00:00");
        zerado = true;
        lConta.revalidate();
        iniciar.setEnabled(true);
        pausar.setEnabled(false);
    }


    public static boolean isContador(){
        return contador;
    }

    public static boolean isZerado(){
        return zerado;
    }

    public static void setZerado(boolean zero){
        zerado = zero;
    }


}
Vê se te ajuda! T+
javolatra

blz, vlw vou testar aqui

Criado 13 de janeiro de 2010
Ultima resposta 14 de jan. de 2010
Respostas 3
Participantes 3