学易优
始于2008年专业教育平台
  • 地区

免费发布课程

学易优网
咨询热线:400-099-6980
学易优网
了解更多 快扫我吧

首页 > 备考指南 > 职业技能 > 正文

Java多线程模拟时钟小程序 文  /学易优网2017年03月17日 11:570

摘要 你知道闹钟的程序是怎么运行的吗?不知道没关系,学易优网老师可以教你,今天我们就一起来学习一下Java多线程模拟时钟。


每个美妙的清晨,我们都会在那极不和谐的闹铃声中醒来,我这辈子最痛恨的东西,闹钟算一个(捂脸)。越讨厌一个东西就越要去了解,那样你才能随时让它消亡,你知道闹钟的程序是怎么运行的吗?不知道没关系,学易优网老师可以教你,今天我们就一起来学习一下Java多线程模拟时钟。

模拟时钟

代码:

package xyy.apps.timer;

 

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Point;

import java.util.Date;

 

import javax.swing.JFrame;

 

public class Clock extends JFrame implements Runnable {

/**

*/

private static final long serialVersionUID = 1L;

final static int LEN_SECOND = 180;

final static int LEN_MINUTE = 140;

final static int LEN_HOUR = 100;

double sAngle, mAngle, hAngle;

 

public Clock() {

super("模拟时钟ver 0.1 by ZHAO Jing");

setSize(600, 600);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

 

@Override

public void paint(Graphics g) {

g.setColor(Color.gray);g.fillRect(0, 0, getWidth(), getHeight());//填充背景

Point center = new Point(getWidth() / 2, getHeight() / 2);

Date date = new Date();

int h = date.getHours();

int m = date.getMinutes();

int s = date.getSeconds();

hAngle = (h + m / 60. + s / 3600.) * 30 - 90;

mAngle = (m + s / 60.) * 6 - 90;

sAngle = s * 6 - 90;

g.setColor(Color.white);g.drawString(date.toLocaleString(), center.x - 50, 70);//绘画数字时钟

int r = 200;

g.setColor(Color.blue);

g.drawArc(center.x - 5, center.y - 5, 10, 10, 0, 360);//绘画钟的外圆

g.drawArc(center.x - r, center.y - r, 2 * r, 2 * r, 0, 360);//绘画圆心

g.setColor(Color.black);

for (int i = 0; i < 12; i++) {//绘画刻度

int j = i + 10;

g.drawString(

"" + (i + 1),

(int) (center.x + (r - 18)

* Math.cos((j * 30) / 180. * Math.PI)),

(int) (center.y + (r - 18)

* Math.sin((j * 30) / 180. * Math.PI)));

}

g.setColor(Color.red);//绘制时针、分针、秒针

g.drawLine(

center.x,

center.y,

(int) (center.x + (LEN_HOUR)

* Math.cos(hAngle / 180. * Math.PI)),

(int) (center.y + (LEN_HOUR)

* Math.sin(hAngle / 180. * Math.PI)));

g.setColor(Color.blue);

g.drawLine(

center.x,

center.y,

(int) (center.x + (LEN_MINUTE)

* Math.cos(mAngle / 180. * Math.PI)),

(int) (center.y + (LEN_MINUTE)

* Math.sin(mAngle / 180. * Math.PI)));

g.setColor(Color.yellow);

g.drawLine(

center.x,

center.y,

(int) (center.x + (LEN_SECOND)

* Math.cos(sAngle / 180.0 * Math.PI)),

(int) (center.y + (LEN_SECOND)

* Math.sin(sAngle / 180.0 * Math.PI)));

}

 

public static void main(String[] args) {

new Thread(new Clock()).start();//主程序(多线程)

 

}

 

@Override

public void run() {//每隔一秒调用重绘方法(paint(Graphics))

while (true) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

repaint();

 

}

 

}

 

}

这个世界上大部分事物都是可以用计算机语言表达出来的,这就是编程语言的魅力。你心动了吗?趁着年轻为何不去拼一把,没有基础不可怕,可怕的是没有基础而又不去学习,还在犹豫什么,打开微信关注我们的官方微信公众号:xueyeyou.你可以报名参加我们的培训,也可以与我们进行互动学习更多的编程知识。





阅读上一篇:早教的意义在于哪儿?父母们真的懂吗?

阅读下一篇:奥地利留学奖学金介绍


发表评论

暂无评论

在线投稿

亲,请先登录呦~
关于我们
关于学易优
企业理念
网站地图
联系我们
报名指南
求学登记
报名流程
帮我选课
付款方式
招生合作
机构合作
会员服务
网站加盟
广告服务
学员专享
专享礼遇
积分制度
客服中心
咨询热线
400-099-6980
周一至周日:
8:00-22:00