# Java: Example - Text Clock

This is a simple text clock. See javax.swing.Timer for an explanation of how use this simple timer class.

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
    // TextClock.java -- Uses Timer, Calendar, JTextField.
    //  -- Fred Swartz, 1999-05-01, 2001-11-02
    //  Enhancements: center, leading zeros, uneditable, 12 hour, alarm, timer.

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.util.Calendar;      // only need this one class

    ////////////////////////////////////////////////////////////////// TextClock
    public class TextClock {
        //================================================================= main
        public static void main(String[] args) {
            JFrame clock = new TextClockWindow();
            clock.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            clock.setVisible(true);
        }//end main
    }//endclass TextClock

    //////////////////////////////////////////////////////////// TextClockWindow
    class TextClockWindow extends JFrame {
        //=================================================== instance variables
        private JTextField timeField;  // set by timer listener

        //========================================================== constructor
        public TextClockWindow() {
            // Build the GUI - only one panel
            timeField = new JTextField(6);
            timeField.setFont(new Font("sansserif", Font.PLAIN, 48));

            Container content = this.getContentPane();
            content.setLayout(new FlowLayout());
            content.add(timeField);

            this.setTitle("Text Clock");
            this.pack();

            // Create a 1-second timer and action listener for it.
            // Specify package because there are two Timer classes
            javax.swing.Timer t = new javax.swing.Timer(1000,
                  new ActionListener() {
                      public void actionPerformed(ActionEvent e) {
                          Calendar now = Calendar.getInstance();
                          int h = now.get(Calendar.HOUR_OF_DAY);
                          int m = now.get(Calendar.MINUTE);
                          int s = now.get(Calendar.SECOND);
                          timeField.setText("" + h + ":" + m + ":" + s);
                      }
                  });
            t.start();  // Start the timer
        }//end constructor
    }//endclass TextClock