42 import java.applet.Applet;
43 import java.awt.Color;
45 import java.awt.Graphics;
46 import java.text.SimpleDateFormat;
47 import java.util.Date;
48 import java.util.Locale;
57 @SuppressWarnings(
"serial")
69 private int xcenter = 80, ycenter = 55;
73 lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
74 formatter =
new SimpleDateFormat(
"EEE MMM dd hh:mm:ss yyyy",
76 currentDate =
new Date();
77 lastdate = formatter.format(currentDate);
78 clockFaceFont =
new Font(
"Serif", Font.PLAIN, 14);
79 handColor = Color.blue;
80 numberColor = Color.darkGray;
83 setBackground(
new Color(Integer.parseInt(getParameter(
"bgcolor"),
85 }
catch (NullPointerException e) {
86 }
catch (NumberFormatException e) {
89 handColor =
new Color(Integer.parseInt(getParameter(
"fgcolor1"),
91 }
catch (NullPointerException e) {
92 }
catch (NumberFormatException e) {
95 numberColor =
new Color(Integer.parseInt(getParameter(
"fgcolor2"),
97 }
catch (NullPointerException e) {
98 }
catch (NumberFormatException e) {
108 int xh, yh, xm, ym, xs, ys;
109 int s = 0, m = 10, h = 10;
112 currentDate =
new Date();
114 formatter.applyPattern(
"s");
116 s = Integer.parseInt(formatter.format(currentDate));
117 }
catch (NumberFormatException n) {
120 formatter.applyPattern(
"m");
122 m = Integer.parseInt(formatter.format(currentDate));
123 }
catch (NumberFormatException n) {
126 formatter.applyPattern(
"h");
128 h = Integer.parseInt(formatter.format(currentDate));
129 }
catch (NumberFormatException n) {
134 xs = (int) (Math.cos(s * Math.PI / 30 - Math.PI / 2) * 45 + xcenter);
135 ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter);
136 xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter);
137 ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter);
138 xh = (int) (Math.cos((h * 30 + m / 2) * Math.PI / 180 - Math.PI / 2)
141 yh = (int) (Math.sin((h * 30 + m / 2) * Math.PI / 180 - Math.PI / 2)
146 formatter.applyPattern(
"EEE MMM dd HH:mm:ss yyyy");
147 today = formatter.format(currentDate);
149 g.setFont(clockFaceFont);
151 g.setColor(getBackground());
152 if (xs != lastxs || ys != lastys) {
153 g.drawLine(xcenter, ycenter, lastxs, lastys);
154 g.drawString(lastdate, 5, 125);
156 if (xm != lastxm || ym != lastym) {
157 g.drawLine(xcenter, ycenter - 1, lastxm, lastym);
158 g.drawLine(xcenter - 1, ycenter, lastxm, lastym);
160 if (xh != lastxh || yh != lastyh) {
161 g.drawLine(xcenter, ycenter - 1, lastxh, lastyh);
162 g.drawLine(xcenter - 1, ycenter, lastxh, lastyh);
166 g.setColor(numberColor);
167 g.drawString(today, 5, 125);
168 g.drawLine(xcenter, ycenter, xs, ys);
169 g.setColor(handColor);
170 g.drawLine(xcenter, ycenter - 1, xm, ym);
171 g.drawLine(xcenter - 1, ycenter, xm, ym);
172 g.drawLine(xcenter, ycenter - 1, xh, yh);
173 g.drawLine(xcenter - 1, ycenter, xh, yh);
186 g.setFont(clockFaceFont);
188 g.setColor(handColor);
189 g.drawArc(xcenter - 50, ycenter - 50, 100, 100, 0, 360);
190 g.setColor(numberColor);
191 g.drawString(
"9", xcenter - 45, ycenter + 3);
192 g.drawString(
"3", xcenter + 40, ycenter + 3);
193 g.drawString(
"12", xcenter - 5, ycenter - 37);
194 g.drawString(
"6", xcenter - 3, ycenter + 45);
197 g.setColor(numberColor);
198 g.drawString(lastdate, 5, 125);
199 g.drawLine(xcenter, ycenter, lastxs, lastys);
200 g.setColor(handColor);
201 g.drawLine(xcenter, ycenter - 1, lastxm, lastym);
202 g.drawLine(xcenter - 1, ycenter, lastxm, lastym);
203 g.drawLine(xcenter, ycenter - 1, lastxh, lastyh);
204 g.drawLine(xcenter - 1, ycenter, lastxh, lastyh);
209 timer =
new Thread(
this);
219 @SuppressWarnings(
"SleepWhileHoldingLock")
221 Thread me = Thread.currentThread();
222 while (timer == me) {
225 }
catch (InterruptedException e) {
233 return "Title: A Clock \n"
234 +
"Author: Rachel Gollub, 1995 \n"
235 +
"An analog clock.";
241 {
"bgcolor",
"hexadecimal RGB number",
242 "The background color. Default is the color of your browser." },
243 {
"fgcolor1",
"hexadecimal RGB number",
244 "The color of the hands and dial. Default is blue." },
245 {
"fgcolor2",
"hexadecimal RGB number",
246 "The color of the second hand and numbers. Default is dark gray." }