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();
}
}
}
注部分参考别人代码,修改完成。
分享到:
相关推荐
在Java编程环境中,创建一个窗口程序来实现模拟钟表和数字钟表的切换是一项常见的GUI(图形用户界面)编程任务。这个程序的核心是利用Java Swing库来构建窗口和组件,同时结合多线程来实时更新时钟显示。下面将详细...
在Java编程语言中,"钟表实现 java版"是一个典型的GUI(图形用户界面)编程项目,用于创建一个模拟真实钟表的程序。这个程序通过在屏幕上显示时、分、秒来模仿钟表的运行,为用户提供一个直观的时间展示。下面我们将...
本项目提供的源代码就是一个简单的钟表模拟,允许用户在屏幕上看到实时的时间显示。以下是这个项目中涉及的一些核心知识点: 1. **Java GUI**: 该项目可能使用了Java的Swing库或JavaFX来构建图形用户界面。Swing是...
该项目是一个Java模拟时钟代码,旨在创建一个窗口程序,完成一个模拟钟表和一个数字钟表,并可以通过菜单进行切换。设计要求包括界面具有创意、钟表在正点具有音乐报时功能、钟表具有设置时间的功能等。 知识点一:...
Java图形时钟是一种利用Java编程语言创建的可视化应用程序,它能模拟现实世界中的钟表,显示当前的时间。在这个项目中,开发者使用了Eclipse作为集成开发环境(IDE),结合Java的多媒体功能,来构建这个图形时钟。...
在Java编程中,我们可以使用`java.util.Timer`类来创建定时任务,就像在文档"一个定时器Timer实现的钟表.doc"中所示,该文档描述了一个使用`Timer`类模拟钟表的工作原理。这个程序通过每秒更新一次时间来模拟钟表的...
本程序展示了如何使用Java Applet结合AWT和多线程技术实现一个简单的动态时钟应用。通过理解程序的关键逻辑和设计思路,读者可以更好地掌握Java Applet的基本用法及其在实际项目中的应用。此外,还可以进一步探索...
1. **图像生成**:使用Java的`java.awt`和`javax.imageio`库来创建和处理图像。你需要创建一个时钟背景,然后在上面绘制时钟盘面、时针和分针,以及可能的干扰元素,如噪点或线条,以增加破解难度。 2. **随机时间...