Timer with ProgressBar
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Calendar; public class TimerExample extends JPanel implements ActionListener { private Timer timer = new Timer(100, this); private JLabel clockLabel; private Calendar calendar = Calendar.getInstance(); private SimpleDateFormat dateFormat = new SimpleDateFormat("h:mm ss a"); private JProgressBar secondsProgressBar = new JProgressBar(0, 1000); public TimerExample() { this.clockLabel = new JLabel("Clock Stopped"); this.clockLabel.setFont(this.clockLabel.getFont().deriveFont(Font.BOLD, 16)); this.clockLabel.setHorizontalTextPosition(JLabel.CENTER); this.secondsProgressBar.setVisible(false); this.secondsProgressBar.setForeground(Color.blue); add(this.clockLabel); add(secondsProgressBar); add(new JButton(new ToggleClockAction())); } private class ToggleClockAction extends AbstractAction { private String startClock = "Start Clock"; private String stopClock = "Stop Clock"; private String clockStopped = "Clock Stopped"; public ToggleClockAction() { super(); putValue(Action.NAME, startClock); } public void actionPerformed(ActionEvent e) { if (TimerExample.this.timer.isRunning()) { putValue(Action.NAME, startClock); TimerExample.this.timer.stop(); TimerExample.this.secondsProgressBar.setVisible(false); TimerExample.this.clockLabel.setText(clockStopped); } else { putValue(Action.NAME, stopClock); // Call Action Performed To Initialize Time Before Timer is Started. // Null is ok since we ignore the event. TimerExample.this.actionPerformed(null); TimerExample.this.secondsProgressBar.setVisible(true); TimerExample.this.timer.start(); } } } public void actionPerformed(ActionEvent e) { this.calendar.setTimeInMillis(System.currentTimeMillis()); this.clockLabel.setText(this.dateFormat.format(this.calendar.getTime())); int milliseconds = this.calendar.get(Calendar.MILLISECOND); this.secondsProgressBar.setValue(milliseconds); } public void endExample() { this.timer.stop(); } public static void main(String[] a){ JFrame f = new JFrame(); f.setDefaultCloseOperation(1); f.add(new TimerExample()); f.pack(); f.setVisible(true); } }