如何用java实现一个计时器
发布时间:2025-05-19 12:08:10 发布人:远客网络
一、如何用java实现一个计时器
1、怎么还没人回答,看不过去了,用不用多线程根据你的程序需要,
2、public static void main(String[] args){
3、timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
4、while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了
5、timer.cancel();//使用这个方法退出任务
6、// TODO Auto-generated catch block
7、static class MyTask extends java.util.TimerTask{
8、大概就是这样了,在根据你的业务需要查一下资料,就可以搞定了!
二、谁有用java的application编写的倒计时钟代码
1、分类:电脑/网络>>程序设计>>其他编程语言
2、是一个这样的倒计时钟:输入一个时间比如120分钟按开始后倒计时开始.在中途可以选择暂停.在剩下1分钟时会有提示.
3、要用application编写的哦.麻烦各位高手了.
4、 public class T extends Applet implements Runnable{
5、 Thread tHour= null,tMinute= null,tSecond= null;表示时针,分针和秒针的线程
6、 int hour_a,hour_b,minute_a,minute_b,second_a,second_b;表示时针,分针,秒针端点的整型变量
7、 int hour= 0,minute= 0,second= 0;获取当前时间的整型变量
8、绘制时针,分针和秒针的Graphics对象
9、 Graphics g_second= null,g_minute= null,g_hour=null;
10、存放表盘刻度的数组,供指针走动时使用
11、 double point_x[]= new double[61],point_y[]= new double[61];
12、存放表盘刻度的数组,供绘制表盘使用
13、 double scaled_x[]= new double[61],scaled_y[]= new double[61];
14、 g_second= this.getGraphics();
15、 g_second.setColor(Color.RED);
16、 g_minute= this.getGraphics();
17、 g_minute.setColor(Color.blue);
18、 g_second.translate(200,200);进行坐标系统变换,将新坐标系原点设在(200,200)处
19、 point_x[0]= 0; point_y[0]=-120;各个时针12点处的位置坐标(按新坐标系的坐标)
20、 scaled_x[0]= 0;scaled_y[0]=-140;12点处的刻度位置坐标(按新坐标系的坐标)
21、 double jiaodu= 6*Math.PI/180;
22、表盘分割成60分,将分割点的坐标存放在数组中
23、 for(int i= 0; i< 60; i++){
24、 point_x[i+1]= point_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*point_y[i];
25、 point_y[i+1]= point_y[i]*Math.cos(jiaodu)+ point_x[i]*Math.sin(jiaodu);
26、 point_x[60]= 0; point_y[60]=-120;
27、 for(int i= 0; i< 60; i++){
28、 scaled_x[i+1]= scaled_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*scaled_y[i];
29、 scaled_y[i+1]= scaled_y[i]*Math.cos(jiaodu)+ Math.sin(jiaodu)*scaled_x[i];
30、每当小程序重新开始时,首先消灭线程,然后重新开始创建线程
31、 if(start_count>= 2) start_count= 1;
32、 public void paint(Graphics g){
33、 g.drawOval(50,50,300,300);表盘的外圈
34、 for(int i= 0; i< 60; i++){
35、 g.fillOval((int) scaled_x[i],(int) scaled_y[i],10,10);
36、 g.fillOval((int)scaled_x[i],(int)scaled_y[i],5,5);
37、 hour=Integer.parseInt(s.substring(11,13));
38、 minute= Integer.parseInt(s.substring(14,16));
39、 second= Integer.parseInt(s.substring(17,19));
40、 if(Thread.currentThread()== tSecond){
41、 second_a=(int)point_x[second];
42、 second_b=(int)point_x[second];
43、 g_second.drawLine(0,0,second_a,second_b);秒针的初始位置
44、 g_second.drawString("秒",second_a,second_b);
45、 g_second.drawLine(0,0,second_a,second_b);用背景色清除前一秒时的秒针
46、 g_second.drawString("秒",second_a,second_b);
47、如果秒针与分针重合,恢复分针的显示
48、 if((second_a== minute_a)&&(second_b== minute_b)){
49、 g_minute.drawLine(0,0,minute_a,minute_b);
50、 g_minute.drawString("分",minute_a,minute_b);
51、如果秒针与时针重合,恢复时针的显示
52、 if((second_a== hour_a)&&(second_b== hour_b)){
53、 g_hour.drawLine(0,0,hour_a,hour_b);
54、 g_hour.drawString("时",hour_a,hour_b);
55、 catch(InterruptedException e){
56、 g_second.drawLine(0,0,second_a,second_b);用背景色清除秒针
57、 g_second.drawString("秒",second_a,second_b);
58、 second_a=(int)point_x[(i+1)%60];
59、 second_b=(int)point_y[(i+1)%60];每一秒走6度(一个单位格)
60、 g_second.setColor(Color.red);
61、 g_second.drawLine(0,0,second_a,second_b);
62、 g_second.drawString("秒",second_a,second_b);
63、 if(Thread.currentThread()== tMinute){
64、 minute_a=(int)point_x[minute];
65、 minute_b=(int)point_y[minute];
66、 g_minute.drawLine(0,0,minute_a,minute_b);
67、第一次过60-second秒就前进一分钟,以后每过60秒前进一分钟
68、 tMinute.sleep(1000*60- second*1000);
69、 g_minute.drawLine(0,0,minute_a,minute_b);
70、 g_minute.drawString("分",minute_a,minute_b);
71、 if((hour_a== minute_a)&&(hour_b== minute_b)){
72、 g_hour.drawLine(0,0,minute_a,minute_b);
73、 g_hour.drawString("时",hour_a,hour_b);
74、 catch(InterruptedException e){
75、 minute_a=(int)point_x[(i+1)%60];
76、 minute_b=(int)point_y[(i+1)%60];
77、 g_minute.setColor(Color.BLUE);
78、 g_minute.drawLine(0,0,minute_a,minute_b);
79、 g_minute.drawString("分",minute_a,minute_b);
80、 if(Thread.currentThread()== tHour){
81、 hour_a=(int)point_x[h*5+ minute/12];
82、 hour_b=(int)point_y[h*5+ minute/12];
83、 g_hour.drawLine(0,0,hour_a,hour_b);
84、 g_hour.drawString("时",hour_a,hour_b);
85、第一次过12-minute%12分钟就前进一个刻度,以后每过12分钟前进一个刻度
86、 tHour.sleep(1000*60*12- 1000*60*(minute%12)- second*1000);
87、 g_hour.drawLine(0,0,hour_a,hour_b);
88、 g_hour.drawString("时",hour_a,hour_b);
89、 catch(InterruptedException e){
90、 hour_a=(int)point_x[(i+1)%60];
91、 hour_b=(int)point_y[(i+1)%60];
92、 g_hour.drawLine(0,0,hour_a,hour_b);
93、 g_hour.drawString("时",hour_a,hour_b);
三、java如何获取当前时间 年月日 时分秒
java如何获取当前时间以及格式化需要用到两个类,如下图:
1.获取当前时间,并格式化为(年-月-日时:分:秒)。
SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(t));
2.将java.util.Date转换为java.sql.Date格式。
java.sql.Date sqld= new java.sql.Date(t.getTime());
java.sql.Time sqlt= new java.sql.Time(t.getTime());
java.sql.Timestamp sqlts= new java.sql.Timestamp(t.getTime());
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,舍弃了容易引起错误的指针,以引用取代;移除了C++中的运算符重载和多重继承特性,用接口取代;增加垃圾回收器功能。
Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。