1 15 16 18 36 package ixenon.free.swing; 37 38 import java.awt.*; 39 import java.awt.event.*; 40 import java.util.Date ; 41 import java.text.*; import javax.swing.*; import javax.swing.event.*; 44 45 47 48 58 public class DigitalClock extends JLabel 59 implements ActionListener 60 { 61 private final static String MODE12 = "hh:mm:ss aa"; 62 private final static String MODE24 = "HH:mm:ss --"; 63 64 private boolean mode24Hours; private Timer timer; private SimpleDateFormat stamper; 67 68 71 public DigitalClock() 72 { 73 timer = new Timer( 1000, this ); 74 timer.setInitialDelay( 100 ); 75 timer.setCoalesce(true); 76 stamper = new SimpleDateFormat( MODE24 ); 77 mode24Hours = true; 78 setText( "--:--:-- ---" ); 79 } 81 82 83 public void setMode24Hours( boolean mode ) 84 { 85 mode24Hours = mode; 86 if (mode24Hours) 87 stamper = new SimpleDateFormat( MODE24 ); 88 else 89 stamper = new SimpleDateFormat( MODE12 ); 90 if ( timer.isRunning() ) 91 updateClock(); 92 } 93 94 95 public boolean isMode24Hours() 96 { 97 return (mode24Hours); 98 } 99 100 101 public boolean isRunnning() 102 { 103 return (timer.isRunning() ); 104 } 105 106 107 public void start() 108 { 109 if ( !timer.isRunning() ) 110 timer.start(); 111 } 112 113 114 public void stop() 115 { 116 if ( timer.isRunning() ) 117 timer.stop(); 118 } 119 120 121 public void reset() 122 { 123 if ( timer.isRunning() ) { 124 timer.stop(); 125 setText( "--:--:-- ---" ); 126 } 127 } 128 129 130 protected void updateClock() 131 { 132 Date now = new Date (); 133 String dtstr = stamper.format( now ); 134 setText(dtstr); 135 } 136 137 public void actionPerformed( ActionEvent e ) 138 { 139 Object src = e.getSource(); 140 if ( timer == src ) { 141 updateClock(); 142 } 143 } 144 145 } 146 147 | Popular Tags |