package checkers; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; /** * Component showing game clock */ public class Clock extends JPanel { private static final long serialVersionUID = 8988209987063047869L; private final JLabel label; private final Timer timer; private int time=0; public Clock() { label = new JLabel(); add(label); label.setFont(new Font(Font.MONOSPACED, Font.BOLD, 16)); timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { time++; update(); } }); update(); } private void update() { label.setText(String.format("%02d:%02d", time/60,time%60)); if(timer.isRunning()) label.setForeground(Color.RED); else label.setForeground(Color.BLACK); } public void stop() { timer.stop(); update(); } public void reset() { time=0; update(); stop(); } public void start() { timer.start(); update(); } @Override protected void finalize() throws Throwable { timer.stop(); } }