JAVA——编写时钟程序

版权声明:DY https://blog.csdn.net/Atishoo_13/article/details/82825189

编写时钟程序


1.要求

创建一个窗口并实时显示当前时间,每1秒时钟内容更新一次,在界面中包含数字式和表盘式的显示。

2.语法

  • Java.util.Calendar包的使用
    绘制时钟图形
  • GregorianCalendar()的用法
    Calender now=new GregorianCalendar();
  • 绘制图形Graphics2D g2D=(Graphics2D)g;,Graphics强制类型转换成Graphics2D。
  • 获取系统时间。
    1)int hour=now.get(Calendar.HOUR_OF_DAY):取得当前的小时部分;
    2)int minute=now.get(Calendar.MINUTE):取得当前时间的分钟部分;
    3)int second =now.get(Calendar.SECOND):取得当前时间的秒。

3.代码

绘制时钟图形:

//绘制图形
		Graphics2D g2D=(Graphics2D) g;//Graphics强制类型转换成Graphics2D
		Insets insets =getInsets();//创建JFrame的边界对象
		int L=insets.left/2,T=insets.top/2;//L=左边界的2/1,T=上边界的2/1
		h =getSize().height;//返回JFrame的高度
		g.setColor(new Color(115,74,18));//设置画笔颜色为棕色
		//画圆
		g2D.setStroke(new BasicStroke(5.0f));//勾画出宽度为4cm的圆
		g.drawOval(L+40,T+40,h-80,h-80);//
		r=h/2-40;
		x_1=40+r-5+L;
		y_1=40+r-5-T;
		ang=60;
		//绘制时钟上的12个字
		g.setFont(new Font("",Font.BOLD,12));
		g.setColor(new Color(255,255,255));
		for(int i=1;i<=12;i++) {
			x=(int)((r+12)*Math.cos(RAD * ang)+x_1);
			y=(int)((r+12)*Math.sin(RAD * ang)+y_1);
			g.drawString(""+ i,x, h-y);
			ang -=30;
		}

获得现在的时间:

Calendar now=new GregorianCalendar();//创建Calender对象now
		int hour=now.get(Calendar.HOUR_OF_DAY);//取得当前的小时部分
		int minute=now.get(Calendar.MINUTE);//取得当前时间的分钟部分
		int second =now.get(Calendar.SECOND);//取得当前时间的秒
		String st;
		if(hour<10)
			st="0"+hour;
		else
			st=""+hour;
		if(minute<10)
			st+=":0"+minute;
		else
			st +=":"+minute;
		if(second<10)
			st+=":0"+second;
		else
			st +=":"+second;
		//窗体上显示时间格式,如00:00:00

擦除秒针,原理是将秒针颜色改变为原来的背景颜色(绘制分针和时针的原理与此相同):

if(ss_x>0) {//擦除秒针,原理为改变为原来的背景颜色
			g.setColor(getBackground());
			g.drawLine(x_1, y_1, ss_x, h-ss_y);
		}else {
			old_m = mm;
			old_h = hh;
		}

绘制秒针:

x=(int)(r*0.9*Math.cos(RAD*ss))+x_1;
		y=(int)(r*0.9*Math.sin(RAD*ss))+y_1-2*T;
		g.setColor(new Color(255,99,71));
		g.drawLine(x_1, y_1, x, h-y);
		ss_x=x;
		ss_y=y;

新建窗口并创建一个时间计数器,实现每一秒触发一次:

	public rw23() {
		super("JAVA 小时钟");
		setDefaultCloseOperation(3);
		Image image =getToolkit().getImage("1.jpg");
		setIconImage(image);
		setSize(500,500);
		setBackground(Color.black);
		setLocation(300,150);
		setResizable(false);
		setVisible(true);
		show();
		int delay =1000;
		ActionListener draw =new ActionListener() {//创建一个监听事件
			public void actionPerformed(ActionEvent evt) {
				repaint();
			}
				
		};
		new Timer(delay,draw).start();//创建一个时间计数器,每一秒触发一次
	}

完整的代码可点此进行获取:
https://download.csdn.net/download/atishoo_13/10684018
若想改变窗口的颜色,可参看RGB颜色查询对照表:
https://blog.csdn.net/Atishoo_13/article/details/82788669

4.结果

编译结果如下图所示:
在这里插入图片描述
在这里插入图片描述
运行结果如下图所示:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Atishoo_13/article/details/82825189
今日推荐