import java.awt.BasicStroke;
import java.awt.geom.Ellipse2D;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class run extends javax.swing.JFrame {
// 定义一Graphics变量,用来画分针、秒针、时针等
private java.awt.Graphics g;
// 定义一个图片变量来存背景图片
private java.awt.Image backGround;
// 定义一个X,Y,分别表示钟表中心的坐标
// R表示秒针的半径
private int X = 300, Y = 300, R = 160;
// 分别定义分针、秒针、时针的X、Y坐标
private int X_HOUR, X_MINUTE, X_SECOND;
private int Y_HOUR, Y_MINUTE, Y_SECOND;
public void loadBackground() {
this.setTitle("小钟表");
this.setSize(600, 600);
// 改其属性为不可变大小
this.setResizable(false);
// 设置其为关闭后退出
this.setDefaultCloseOperation(3);
// 设置其为可见
this.setVisible(true);
// 定义画布对象
g = this.getGraphics();
this.setBackground(java.awt.Color.white);
}
public void miaoMove(java.util.Date d) {
// 将g包装成一个graphics2D
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
// 将其颜色设置成为红
g2.setColor(java.awt.Color.RED);
// 计算 X_SECOND, Y_SECOND
X_SECOND = (int) (X + R
* Math.cos(d.getSeconds() * 2 * Math.PI / 60 - Math.PI / 2));
Y_SECOND = (int) (Y + R
* Math.sin(d.getSeconds() * 2 * Math.PI / 60 - Math.PI / 2));
g2.setStroke(new BasicStroke(1));
g2.drawLine(X, Y, X_SECOND, Y_SECOND);
}
public void fenMove(java.util.Date d) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.BLUE);
X_MINUTE = (int) (X + (R * 0.8)
* Math.cos(d.getMinutes() * 2 * Math.PI / 60 - Math.PI / 2));
Y_MINUTE = (int) (Y + (R * 0.8)
* Math.sin(d.getMinutes() * 2 * Math.PI / 60 - Math.PI / 2));
g2.setStroke(new BasicStroke(5));
g2.drawLine(X, Y, X_MINUTE, Y_MINUTE);
}
public void shiMove(java.util.Date d) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.BLACK);
X_HOUR = (int) (X + (R * 0.5)
* Math.cos(d.getHours() * 2 * Math.PI / 12 + d.getMinutes() * 2
* Math.PI / (60 * 12) - Math.PI / 2));
Y_HOUR = (int) (Y + (R * 0.5)
* Math.sin(d.getHours() * 2 * Math.PI / 12 + d.getMinutes() * 2
* Math.PI / (60 * 12) - Math.PI / 2));
g2.setStroke(new BasicStroke(5));
g2.drawLine(X, Y, X_HOUR, Y_HOUR);
}
public void miaoMove2(java.util.Date d) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.WHITE);
X_SECOND = (int) (X + R
* Math.cos(d.getSeconds() * 2 * Math.PI / 60 - Math.PI / 2));
Y_SECOND = (int) (Y + R
* Math.sin(d.getSeconds() * 2 * Math.PI / 60 - Math.PI / 2));
g2.setStroke(new BasicStroke(1));
g2.drawLine(X, Y, X_SECOND, Y_SECOND);
}
public void fenMove2(java.util.Date d) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.WHITE);
X_MINUTE = (int) (X + (R * 0.8)
* Math.cos(d.getMinutes() * 2 * Math.PI / 60 - Math.PI / 2));
Y_MINUTE = (int) (Y + (R * 0.8)
* Math.sin(d.getMinutes() * 2 * Math.PI / 60 - Math.PI / 2));
g2.setStroke(new BasicStroke(5));
g2.drawLine(X, Y, X_MINUTE, Y_MINUTE);
}
public void shiMove2(java.util.Date d) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.WHITE);
X_HOUR = (int) (X + (R * 0.5)
* Math.cos(d.getHours() * 2 * Math.PI / 12 + d.getMinutes() * 2
* Math.PI / (60 * 12) - Math.PI / 2));
Y_HOUR = (int) (Y + (R * 0.5)
* Math.sin(d.getHours() * 2 * Math.PI / 12 + d.getMinutes() * 2
* Math.PI / (60 * 12) - Math.PI / 2));
g2.setStroke(new BasicStroke(5));
g2.drawLine(X, Y, X_HOUR, Y_HOUR);
}
public void paint(java.awt.Graphics g) {
super.paint(g);
g.drawImage(backGround, 0, 0, 600, 600, null);
}
public void showData(java.util.Date d) {
SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss",
Locale.CHINA);
String result = f.format(d);
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.darkGray);
g2.drawString(result, 220, 580);
}
public void showData2(java.util.Date d) {
SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss",
Locale.CHINA);
String result = f.format(d);
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.white);
g2.drawString(result, 220, 580);
}
public void drawFram() {
java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
g2.setColor(java.awt.Color.BLACK);
g2.setStroke(new BasicStroke(2));
Ellipse2D circle = new Ellipse2D.Double();
circle.setFrameFromCenter(X, Y, X + R, Y + R);// 设置椭圆中点及a,b
g2.draw(circle);
int r;
for (int i = 0; i < 61; i += 5) {
if ((i % 10) == 5) {
r = 4;
g2.setColor(java.awt.Color.BLUE);
} else {
r = 6;
g2.setColor(java.awt.Color.RED);
}
int X_PIONT = (int) (X + R
* Math.cos(i * 2 * Math.PI / 60 - Math.PI / 2));
int Y_PIONT = (int) (Y + R
* Math.sin(i * 2 * Math.PI / 60 - Math.PI / 2));
Ellipse2D circle_point = new Ellipse2D.Double();
circle_point.setFrameFromCenter(X_PIONT, Y_PIONT, X_PIONT + r,
Y_PIONT + r);
g2.draw(circle_point);
g2.fill(circle_point);
}
}
public static void main(String[] args) {
java.util.Date d = new java.util.Date();
run biaoRun = new run();
biaoRun.loadBackground();
while (true) {
biaoRun.showData(d);
biaoRun.shiMove(d);
biaoRun.fenMove(d);
biaoRun.miaoMove(d);
try {
Thread.sleep(1000);
} catch (Exception ef) {
ef.printStackTrace();
}
biaoRun.shiMove2(d);
biaoRun.fenMove2(d);
biaoRun.miaoMove2(d);
biaoRun.showData2(d);
biaoRun.drawFram();
d = new java.util.Date();
}
}
}
注部分参考别人代码,修改完成。