Timer with ProgressBar : Timer « Swing JFC « Java





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

}


           
         
  










Related examples in the same category

1.Timer: clock labelTimer: clock label
2.Timer SampleTimer Sample
3.Tick Tock with an Inner Class
4.Tick Tock with a Static Inner Class
5.Swing Timer Demo
6.Time Resolution
7.An applet that counts down from a specified time
8.Using swing TimerUsing swing Timer