RTC.java
import java.awt.*;
import java.awt.font.*;
import javax.swing.*;
import java.util.*; // Calendar, Date
import java.text.*; // DateFormat, SimpleDateFormat
// Simple real-time clock applet -- WSLeipold -- 2003-09-03
public class RTC extends JApplet
{
public void init()
{
int delay; // Delay (in msec) between updates.
String dformat = null; // Date format string.
int fontsize; // Font size for date string.
int defaultDelay=1000;
int defaultFontsize=14;
// Parameter 'delay' is milliseconds between refreshes.
String s_delay = getParameter("delay");
try {
delay = Integer.parseInt(s_delay);
if (delay <= 0 || delay > 120000)
delay = defaultDelay;
}
catch(NumberFormatException nfe) {
delay = defaultDelay;
}
// Parameter 'format' is a SimpleDateFormat format string.
String s_dformat = getParameter("format");
try {
DateFormat junk = new SimpleDateFormat(s_dformat);
dformat = s_dformat;
}
catch(IllegalArgumentException iae) {
dformat = null;
}
catch(NullPointerException npe) {
dformat = null;
}
// Parameter 'fontsize' is size of displayed font.
String s_fontsize = getParameter("fontsize");
try {
fontsize = Integer.parseInt(s_fontsize);
if (fontsize <= 6 || fontsize > 144)
fontsize = defaultFontsize;
}
catch(NumberFormatException nfe) {
fontsize = defaultFontsize;
}
Container contentPane = getContentPane();
JLabel label = new JLabel("<clock>",SwingConstants.LEFT);
Font f = new Font("Monospaced",Font.PLAIN,fontsize);
label.setFont(f);
contentPane.add(label);
Thread clockThread = new Thread(
new RTC_runner(label,delay,dformat));
clockThread.start();
}
}
class RTC_runner implements Runnable
{
public RTC_runner(JLabel label,int delay,String dformat)
{
this.label = label;
this.delay = delay;
if (this.delay <= 0)
this.delay = 60000;
try {
// Check for a valid format.
DateFormat test_df = new SimpleDateFormat(dformat);
this.df = test_df;
}
catch(IllegalArgumentException iae) {
this.df = new SimpleDateFormat(default_df);
}
catch(NullPointerException npe) {
this.df = new SimpleDateFormat(default_df);
}
}
public void run()
{
try {
while (true) {
label.setText(curdt());
Thread.sleep(delay);
}
}
catch(InterruptedException e) {
}
}
public String curdt()
{
Date now = new Date();
String dt = df.format(now);
return dt;
}
private JLabel label;
private int delay;
private DateFormat df;
private String default_df = "yyyy-MM-dd HH:mm:ss";
}