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(); } }); } }