`
fffddgx
  • 浏览: 39144 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java awt 模拟钟表

    博客分类:
  • J2SE
阅读更多
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编程语言中,"钟表实现 java版"是一个典型的GUI(图形用户界面)编程项目,用于创建一个模拟真实钟表的程序。这个程序通过在屏幕上显示时、分、秒来模仿钟表的运行,为用户提供一个直观的时间展示。下面我们将...

    Java下编写的钟表(源代码可下载直接使用)

    本项目提供的源代码就是一个简单的钟表模拟,允许用户在屏幕上看到实时的时间显示。以下是这个项目中涉及的一些核心知识点: 1. **Java GUI**: 该项目可能使用了Java的Swing库或JavaFX来构建图形用户界面。Swing是...

    java模拟时钟代码

    该项目是一个Java模拟时钟代码,旨在创建一个窗口程序,完成一个模拟钟表和一个数字钟表,并可以通过菜单进行切换。设计要求包括界面具有创意、钟表在正点具有音乐报时功能、钟表具有设置时间的功能等。 知识点一:...

    java图形时钟基于自带多媒体编程

    Java图形时钟是一种利用Java编程语言创建的可视化应用程序,它能模拟现实世界中的钟表,显示当前的时间。在这个项目中,开发者使用了Eclipse作为集成开发环境(IDE),结合Java的多媒体功能,来构建这个图形时钟。...

    一个定时器Timer实现的钟表.doc

    在Java编程中,我们可以使用`java.util.Timer`类来创建定时任务,就像在文档"一个定时器Timer实现的钟表.doc"中所示,该文档描述了一个使用`Timer`类模拟钟表的工作原理。这个程序通过每秒更新一次时间来模拟钟表的...

    用java编写的时钟小程序

    本程序展示了如何使用Java Applet结合AWT和多线程技术实现一个简单的动态时钟应用。通过理解程序的关键逻辑和设计思路,读者可以更好地掌握Java Applet的基本用法及其在实际项目中的应用。此外,还可以进一步探索...

    时钟验证码,java

    1. **图像生成**:使用Java的`java.awt`和`javax.imageio`库来创建和处理图像。你需要创建一个时钟背景,然后在上面绘制时钟盘面、时针和分针,以及可能的干扰元素,如噪点或线条,以增加破解难度。 2. **随机时间...

Global site tag (gtag.js) - Google Analytics