「java时钟函数」java时钟程序代码
今天给各位分享java时钟函数的知识,其中也会对java时钟程序代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、JAVA中关于时钟的程序,高分跪求解释
- 2、怎么用java编写时钟呀?
- 3、怎样用java 程序写一个时钟程序
- 4、用JAVA 语言设计一个实时运行的时钟,请帮助我
- 5、java 小时钟,怎么理解用数学函数求指针端点坐标
JAVA中关于时钟的程序,高分跪求解释
你这个比较有点意思, 呵呵
就说一个吧,时针怎么算
360 * minutes / (12 * 60) 这个很容易理解,就是当前分针多少度。
90 - 360 * minutes / (12 * 60)
为什么是90减去 360 * minutes / (12 * 60)呢?
其实写成 0 减去 360 * minutes / (12 * 60)也可以。你不过那样的话,你的表会快3个小时
日常来说的几点是相对于12点的位置来讲的,要是用图形描述的话就是 Y轴, 90度的位置
这里用90减去360 * minutes / (12 * 60)实在计算时针距离12点的相对弧度。
剩下的你自己看吧。估计差不多了
怎么用java编写时钟呀?
import
java.util.*;
import
java.awt.*;
import
java.applet.*;
//impelements
Runnable
是线程程序的接口
public
class
Clock
extends
Applet
implements
Runnable
{
Thread
timer
=
null;
//
定义线程实体timer
int
xcenter
=
400,
ycenter
=
50;
int
Radius
=
ycenter
-
5;
public
void
init()
{
resize(400,
125);//
设置时钟程序的窗口大小
setBackground(Color.white);//
设置小应用程序的背景色
}
public
void
paint(Graphics
g)
{
int
xh,
yh,
xm,
ym,
xs,
ys,
s,
m,
h;
String
today;
Date
dat
=
new
Date();
//
定义时间类dat
s
=
dat.getSeconds();
//
获得时间秒
m
=
dat.getMinutes();
//
获得时间分
h
=
dat.getHours();
today
=
dat.toLocaleString();
//
获得字符串时间格式
g.clearRect(0,
0,
size().width,
size().height);
//
消除小应用程序
xcenter
=
xcenter
-
1;
//
向左移动一个像素点
if
(xcenter
-50)
xcenter
=
400;
//
如果xcenter小于-50,则回到初始位置
//
计算秒的坐标
xs
=
(int)
(Math.cos(s
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
5)
+
xcenter);
ys
=
(int)
(Math.sin(s
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
5)
+
ycenter);
//
计算分钟的坐标
xm
=
(int)
(Math.cos(m
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
10)
+
xcenter);
ym
=
(int)
(Math.sin(m
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
10)
+
ycenter);
//
计算小时的坐标
xh
=
(int)
(Math.cos((h
*
30
+
m
/
2)
*
3.14f
/
180
-
3.14f
/
2)
*
(Radius
-
20)
+
xcenter);
yh
=
(int)
(Math.sin((h
*
30
+
m
/
2)
*
3.14f
/
180
-
3.14f
/
2)
*
(Radius
-
20)
+
ycenter);
g.setColor(Color.darkGray);
//
设置颜色
g.drawString("9",
xcenter
-
(Radius
-
5),
ycenter
+
3);
//
显示时钟上的数字‘9’
g.drawString("3",
xcenter
+
(Radius
-
10),
ycenter
+
3);
//
显示时钟上的数字‘3’
g.drawString("12",
xcenter
-
5,
ycenter
-
(Radius
-
13));
//
显示时钟上的数字'12'
g.drawString("6",
xcenter
-
3,
ycenter
+
(Radius
-
10));
//
显示时钟上的数字'6'
g.drawString(today,
0,
125);
//
显示字符串时钟
g.drawLine(xcenter,
ycenter,
xs,
ys);
//
画秒针
g.setColor(Color.blue);
//
设置颜色
g.drawArc(xcenter
-
Radius,
ycenter
-
Radius,
2
*
Radius,
2
*
Radius,
0,
360);
//
画钟
g.drawLine(xcenter,
ycenter
-
1,
xm,
ym);
//
画分针
g.drawLine(xcenter
-
1,
ycenter,
xm,
ym);
//
画分针
g.drawLine(xcenter,
ycenter
-
1,
xh,
yh);
//
画时针
g.drawLine(xcenter
-
1,
ycenter,
xh,
yh);
//
画时针
}
public
void
start()
{
if
(timer
==
null)
{
timer
=
new
Thread(this);
//
生成Thread(多线程程序)的对象实体
timer.start();
//
启动生成的线程
}
}
public
void
stop()
{
timer.stop();
//
停止线程的工作
timer
=
null;
//
放掉Thread对象
}
public
void
run()
//
改方法用来定义线程体,一旦线程被启动执行,就开始执行这个方法
{
while
(timer
!=
null)
{
try
{
Thread.sleep(150);
//
使当前正在执行的线程进入睡眠时间由参数millis确定,
//
单位时间是毫秒,当这个时间过去,线程即可运行的
while
(timer
!=
null)
{
try
{
Thread.sleep(150);//
使用当前正在执行的线程进入睡眠时间由参数
//
millis确定,单位是毫秒,当这个时间过去,线程即为可运行的
}
catch
(InterruptedException
e)
{
}
repaint();
//
repaint所做的事其实是去调用方法uadate重画效应用程序
}
timer
=
null;
}
catch
(InterruptedException
e)
{
}
}
}
//
所做的工作是先将整个效应用程序区域清除,再去调用paint,完成重画的动作
public
void
update(Graphics
g)
{
paint(g);
}
}
怎样用java 程序写一个时钟程序
面向对象思想写成:
下面是一个显示器类
public class Display {
private int value;//现在的值
private int limit;//上限值
Display( int limit) {
this.limit = limit;
}
public void increase() {
value++;
if(value == limit) {
value = 0;
}
}
public int getValue() {
return value;
}
public static void main(String[] args) {
Display d = new Display(24);
for(;;) {
d.increase();
System.out.println(d.getValue());
}
}
}
下面创建一个时钟对象:
public class Clock {
private Display h = new Display(24);
private Display min = new Display(60);
private Display s = new Display(60);
public void start () {
for(;;) {
s.increase();
if(s.getValue() == 0){//如果分重置,小时+1
min.increase();
if(min.getValue() == 0){//如果分重置,小时+1
h.increase();
}
}
System.out.printf("%02d:%02d:%02d\n",h.getValue(), min.getValue(),s.getValue());//格式输出
}
}
public static void main(String[] args) {
Clock clock = new Clock();
clock.start();
}
用JAVA 语言设计一个实时运行的时钟,请帮助我
不知道LZ是要Java 还是Javascript
给你贴个java的吧..
如果要javascript的,自己百度搜索一下,很多的
import java.awt.Color;
import java.util.*;
import java.awt.*;
import java.applet.*;
public class Clock extends Applet implements Runnable
{
Thread timer=null;
Label label;
int lastxs=50,lastys=30,lastxm=50,lastym=30,lastxh=50,lastyh=30;
public void init()
{
label=new Label(" ");
setBackground(Color.white);
add(label);
}
public void paint(Graphics g)
{
int xh,yh,xm,ym,xs,ys,s,m,h,xcenter,ycenter;
Date rightnow=new Date();
String today=rightnow.toLocaleString();
label.setText(today);
s=rightnow.getSeconds();
m=rightnow.getMinutes();
h=rightnow.getHours();
xcenter=100;
ycenter=80;
xs=(int)(Math.cos(s*3.14f/30-3.14f/2)*45+xcenter);
ys=(int)(Math.sin(s*3.14f/30-3.14f/2)*45+ycenter);
xm=(int)(Math.cos(m*3.14f/30-3.14f/2)*45+xcenter);
ym=(int)(Math.sin(m*3.14f/30-3.14f/2)*45+ycenter);
xh=(int)(Math.cos((h*30+m*2)*3.14f/180-3.14f/2)*30+xcenter);
yh=(int)(Math.sin((h*30+m*2)*3.14f/180-3.14f/2)*30+ycenter);
g.setFont(new Font("TimesToman",Font.PLAIN,14));
g.setColor(Color.orange);
g.fill3DRect(xcenter-50,ycenter-50,100,100,true);
g.setColor(Color.darkGray);
g.drawString("12",xcenter-5,ycenter-37);
g.drawString("3",xcenter+40,ycenter+3);
g.drawString("6",xcenter-3,ycenter+45);
g.drawString("9",xcenter-45,ycenter+3);
g.setColor(Color.orange);
if(xs!=lastxs||ys!=lastys)
{
g.drawLine(xcenter,ycenter,lastxs,lastys);
}
if(xm!=lastxm||ym!=lastym)
{
g.drawLine(xcenter,ycenter-1,lastxm,lastym);
g.drawLine(xcenter-1,ycenter,lastxm,lastym);
}
if(xh!=lastxh||yh!=lastyh)
{
g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
g.drawLine(xcenter-1,ycenter,lastxh,lastyh);
}
g.setColor(Color.red);
g.drawLine(xcenter,ycenter,xs,ys);
g.drawLine(xcenter,ycenter-1,xm,ym);
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);
lastxs=xs;
lastys=ys;
lastxm=xm;
lastym=ym;
lastxh=xh;
lastyh=yh;
}
public void start()
{
if(timer==null)
{
timer=new Thread(this);
timer.start();
}
}
public void stop()
{
timer=null;
}
public void run()
{
while(timer!=null)
{
try
{
Thread.sleep(1000);
}catch(InterruptedException ie){}
repaint();
}
timer=null;
}
public void update(Graphics g)
{
paint(g);
}
}
java 小时钟,怎么理解用数学函数求指针端点坐标
角度deg转弧度rad的方法如下
rad = deg/ 180.0 * 3.1415926;
java里封装好的方法是
rad=Math.toRadians(deg);
已知 圆心是 x,y ,半径是r ,弧度是rad 根据弧度计算圆周上点的坐标的方法
如果是正东方向,作为0度 起点,计算公式如下
double x1 = x + cos(rad)*r;
double y1 = y + sin(rad)*r;
如果是正北方向,作为0度的起点, 计算公式如下
[*说明,时钟就是以正北方向作为0度起点来计算度数的]
第一种写法
double x1 = x + sin(rad)*r;
double y1 = y - cos(rad)*r;
第二种写法
double x1 = x + sin(rad)*r;
double y1 = y + cos(rad+3.14159265358979323846)*r;
但是明显第一种写法更优雅一点 .
所以下面的代码,就可以简化修改
hx=r1*Math.sin(hdeg)+x;
hy=r1*Math.cos(hdeg+Math.PI)+y;
mx=r2*Math.sin(mdeg)+x;
my=r2*Math.cos(mdeg+Math.PI)+y;
sx=r3*Math.sin(sdeg)+x;
sy=r3*Math.cos(sdeg+Math.PI)+y;
建议修改成
hx = x + r1 * Math.sin(hdeg);
hy = y - r1 * Math.cos(hdeg);
mx = x + r2 * Math.sin(mdeg);
my = y - r2 * Math.cos(mdeg);
sx = x + r3 * Math.sin(sdeg);
sy = y - r3 * Math.cos(sdeg);
其他细节:
时钟的效果有严重的锯齿现象, 如下图
修改paintComponent 方法即可
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 把g转成g2d对象
Graphics2D g2d = (Graphics2D) g;
//消除图像锯齿
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//消除文本锯齿
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
//设置字体格式
g2d.setFont(new Font("宋体",Font.BOLD,18));
//开始绘制
g2d.clearRect(0, 0, 500, 500);
g2d.drawString("我的简易时钟", 210, 50);
g2d.drawString("12", 245, 135);
g2d.drawString("3", 355, 250);
g2d.drawString("6", 245, 365);
g2d.drawString("9", 125, 250);
g2d.drawOval(120, 120, 250, 250);
g2d.drawLine(x, y, (int) hx, (int) hy);
g2d.drawLine(x, y, (int) mx, (int) my);
g2d.drawLine(x, y, (int) sx, (int) sy);
}
java时钟函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java时钟程序代码、java时钟函数的信息别忘了在本站进行查找喔。