java实现时钟

package com.js.ai.modules.pointwall.testxfz;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.JFrame;

public class ClockDemo extends JFrame implements Runnable{
Thread clock;
final int Xpoint=180;
final int Ypoint=180;
final int R=80;
int xHour=0,yHour=0,xSecond=0,ySecond=0,xMin=0,yMin=0;
public ClockDemo() {
	super("数字时钟");
	setFont(new Font("宋体", Font.BOLD, 20));
	start();
	setSize(360, 360);
	setVisible(true);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void start()//开始进程
{
	if(clock==null)//如果进程为空值
	{
		clock=new Thread(this); //实例化进程
		clock.start();//开始进程
	}
}
public void run()//运行进程
{
	while(clock!=null){
		repaint(); //调用paint方法重绘界面
		try {
			Thread.sleep(1000);//线程暂停一秒(1000毫秒)
		} catch (InterruptedException e) {

			e.printStackTrace();
		}
	}

}
public void stop()//停止进程
{
	clock=null;
}
public void paint(Graphics g)//重载组件的paint方法
{
	Graphics2D g2=(Graphics2D) g;//得到Graphics2D对象
	DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.FULL);
	Calendar now =new GregorianCalendar();//实例化日历对象
	now.setTime(new Date());//dateFormat.format(now.getTime())
	String timeInfo="";//输出信息
	int hour=now.get(Calendar.HOUR_OF_DAY);//得到小时数
	int minute=now.get(Calendar.MINUTE);//得到分数
	int second=now.get(Calendar.SECOND);//得到秒数
	if(hour<=9)
		timeInfo+="0"+hour+":";//格式化输出
	else
		timeInfo+=hour+":";
	if(minute<=9)
		timeInfo+="0"+minute+":";
	else
		timeInfo+=minute+":";
	if(second<=9)
		timeInfo+="0"+second+":";
	else
		timeInfo+=second+":";
	g.setColor(Color.yellow);//设置当前颜色为黄色
	Dimension dim=getSize();//得到窗口尺寸
	g.fillRect(0, 0, dim.width, dim.height);//填充背景
	g.setColor(Color.red);//设置当前颜色
	g.drawString(timeInfo, 130, 340);//显示时间字符串
	g.setColor(Color.green);
	g.drawString(dateFormat.format(now.getTime()),20,60);
	g.setColor(Color.black);
	g.setFont(new Font("SAN_SERIF", Font.BOLD, 15));
	for(int i=0,num=12;i<360;i+=6){
		double alfa=Math.toRadians(i);
		int xPox=Xpoint+(int)(R*Math.sin(alfa));
		int yPos=Ypoint-(int)(R*Math.cos(alfa));
		if(i==0)
		{
		if (num%3==0)
		g.setColor(Color.red); // 数字3,6,9,12为红色
		else
		g.setColor(Color.black); // 其余数字为黑色
		g.drawString(""+num,xPox-5,yPos+3); // 写数字
		num=(num+1);
		}
		else {
			g.setColor(Color.black);
			g.drawString(".",xPox,yPos);
		}
	}
	g.setColor(Color.black);
	g.fillOval(Xpoint-4,Ypoint-4,8,8);
	//画秒针
	xSecond=(int)(Xpoint+(R-10)*Math.sin(second*(2*Math.PI/60)));
	ySecond=(int)(Ypoint-(R-10)*Math.cos(second*(2*Math.PI/60)));
	g.setColor(Color.red);
	g.drawLine(Xpoint,Ypoint,xSecond,ySecond);
	//画分针
	xMin=(int)(Xpoint+(R-20)*Math.sin((minute+second/60)*(2*Math.PI/60)));
	yMin=(int)(Ypoint-(R-20)*Math.cos((minute+second/60)*(2*Math.PI/60)));
	g.setColor(Color.red);
	g.drawLine(Xpoint,Ypoint,xMin,yMin);
	//画时针
	xHour=(int)(Xpoint+(R-30)*Math.sin((hour+minute/60+second/60/60)*(2*Math.PI/12)));
	yHour=(int)(Ypoint-(R-30)*Math.cos((hour+minute/60+second/60/60)*(2*Math.PI/12)));
	g.setColor(Color.red);
	g.drawLine(Xpoint,Ypoint,xHour,yHour);
}
public static void main(String[] args)
{
new ClockDemo();
}
}

  

时间: 2024-10-07 13:29:05

java实现时钟的相关文章

java实现时钟方法汇总

import java.awt.Dimension; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; //第一种

Java实现时钟小程序【代码】

哎,好久没上博客园发东西了,上一次还是两个月前的五一写的一篇计算器博客,不过意外的是那个程序成了这学期的Java大作业,所以后来稍微改了一下那个程序就交了上去,这还是美滋滋.然后五月中旬的时候写了一个2048小游戏,由于写完第二个版本第二天就生病了,休养了好几天才缓过来,最后嫌麻烦就没发园子里了,直接挂Github上了.然后又忙着准备期末,期末玩休息了5天又开始数据库课程设计,用Java写了一个小系统,花了一个星期左右,写了差不多3500行了.然后写完就放学了,放学的日子就感觉自己开始懒散了,静

[Java项目01][数字时钟]

我从2016年3月份开始学Java,看的是某宝得来的视频,目前Java SE还没学完. 前几天手痒在网上搜Java小项目,看到Youtube上的歪果仁们做的Java数字时钟,非常简单,适合我这样的新手,于是也做了一份. 效果大概是是这样的: 源代码传到了GitHub上: https://github.com/jpch89/Digital-Clock 另外还录了份视频,免得以后自己忘了怎么做,传到了Vimeo上: https://vimeo.com/159116313 参考资料如下: 1. Cre

java实验项目报告

        JAVA课程项目报告   题目:利用java实现一个时钟的小程序 姓名:王国梁 班级:计科13-2 学号:201303011200         利用JAVA实现一个时钟的小程序 1. 软件开发的需求分析 在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具 ,Java语言是当今流行的网络编程语言,它具有面向对象.与平台无关.安全.多线程 等特点.使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的.嵌入 式设备进行应用程序的开发.面向对象的开发方法是当

【JAVA语言程序设计基础篇】--图形-- 三种时钟--增强对类的理解和应用

1.显示任意时间时钟 2.设置三个可见性属性 分别表示时针,分针,秒针的可见性 3.一个精细的时钟 主类:StillClock @SuppressWarnings("serial") class DetailedClock extends JPanel { private int hour; private int minute; private int second; protected int xCenter, yCenter; protected int clockRadius;

中国MOOC_面向对象程序设计——Java语言_第2周 对象交互_1有秒计时的数字时钟

第2周编程题 查看帮助 返回 第2周编程题,在课程所给的时钟程序的基础上修改 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 1 有秒计时的数字时钟(10分) 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,

java多线程并发编程与CPU时钟分配小议

我们先来研究下JAVA的多线程的并发编程和CPU时钟振荡的关系吧 老规矩,先科普 我们的操作系统在DOS以前都是单任务的 什么是单任务呢?就是一次只能做一件事 你复制文件的时候,就不能重命名了 那么现在的操作系统,我一边在这边写BLOG,一边听歌,一边开着QQ,一边…………………… 显然,现在的操作系统都是多任务的操作系统 操作系统对多任务的支持是怎么样的呢? 每打开一个程序,就启动一个进程,为其分配相应空间(主要是运行程序的内存空间) 这其实就支持并发运行了 CPU有个时钟频率,表示每秒能执行

用Java画简易时钟

最近我一直在写老师布置的时钟日期工具,但是因为部分功能还未实现,所以还不能贴完整代码,不过后面会陆续更新电子表和日历的小程序.虽然这个时钟的效果图不是特别好看,但是基本的功能已经实现.读者可以试着把它做的跟美观漂亮一点. 简易时钟的代码如下: 1 import java.awt.*; 2 import java.awt.geom.AffineTransform; 3 import java.util.Calendar; 4 import javax.swing.JFrame; 5 import

JAVA程序设计(07.3)-----面对对象设计 时钟

1.面对对象设计 时钟的类  3种录入方式(重载) package com.lovo; import java.text.DecimalFormat; import java.util.Calendar; /** * 时钟 类 * @author Abe * */ /** * 属性, 小时,分钟,秒 * * @author Abe * */ public class Clock { private int hour; private int min; private int sec; /** *