import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;

public class CronometroJava extends JFrame {
    private int tempoRestante;
    private Timer timer;
    private JButton botaoInicio;

    public CronometroJava() {
        super("Cronômetro");

        // Configurações iniciais
        tempoRestante = 180; // 3 minutos
        timer = new Timer();
        timer.scheduleAtFixedRate(new AtualizaTempo(), 0, 1000);

        botaoInicio = new JButton("Iniciar");
        botaoInicio.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                iniciarCronometro();
            }
        });

        // Layout da interface gráfica
        setLayout(new FlowLayout());
        add(botaoInicio);

        // Configurações da janela
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 100);
        setLocationRelativeTo(null); // Centralizar na tela
        setVisible(true);
    }

    private void iniciarCronometro() {
        botaoInicio.setEnabled(false);
        timer.scheduleAtFixedRate(new AtualizaTempo(), 0, 1000);
    }

    private void tocarAlarme() {
        JOptionPane.showMessageDialog(this, "Tempo Esgotado!", "Alarme", JOptionPane.WARNING_MESSAGE);
    }

    private class AtualizaTempo extends TimerTask {
        @Override
        public void run() {
            if (tempoRestante > 0) {
                tempoRestante--;
                botaoInicio.setText(String.format("Tempo: %02d:%02d", tempoRestante / 60, tempoRestante % 60));
            } else {
                timer.cancel(); // Parar o timer
                tocarAlarme();
                botaoInicio.setEnabled(true);
                botaoInicio.setText("Iniciar");
            }
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new CronometroJava();
            }
        });
    }
}