import javax.swing.*
import java.awt.*
import java.awt.event.*
import java.util.Date
import java.text.*
public class TestTimer extends JFrame implements ActionListener{
Timer timer
JLabel display = new JLabel()
SimpleDateFormat dateFmt = new SimpleDateFormat("hh:mm:ss")
TestTimer(){
getContentPane().setLayout(new FlowLayout())
timer = new Timer(1000,this)
timer.setRepeats(true)
timer.setInitialDelay(1000)
timer.start()
getContentPane().add(display)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
setSize(200,100)
setVisible(true)
} /模誉/ TestTimer
public void actionPerformed(ActionEvent e){
if(e.getSource() == timer){
display.setText(dateFmt.format(new Date()))
}
} // actionPerformed
public static void main(String[] args){
TestTimer tt = new TestTimer()
}
} // TestTimer
importjava.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)
}
}
import java.util.Calendar \x0d\x0aimport java.util.Date \x0d\x0aimport java.util.Timer \x0d\x0aimport java.util.TimerTask \x0d\x0a \x0d\x0apublic class Test { \x0d\x0apublic static void main(String[] args) { \x0d\x0a//timer1() \x0d\x0atimer2() \x0d\x0a//timer3() \x0d\x0a//timer4() \x0d\x0a} \x0d\x0a \x0d\x0a// 第一种方法:设定指定任务task在指慧毁如定时间time执行 schedule(TimerTask task, Date time) \x0d\x0apublic static void timer1() { \x0d\x0aTimer timer = new Timer() \x0d\x0atimer.schedule(new TimerTask() { \x0d\x0apublic void run() { \x0d\x0aSystem.out.println("-------设定要指定任余族务--------") \x0d\x0a} \x0d\x0a}, 2000)// 设定指定的时间time,此处为2000毫秒 \x0d\x0a} \x0d\x0a \x0d\x0a// 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行 \x0d\x0a// schedule(TimerTask task, long delay, long period) \x0d\x0apublic static void timer2() { \x0d\x0aTimer timer = new Timer() \x0d\x0atimer.schedule(new TimerTask() { \x0d\x0apublic void run() { \x0d\x0aSystem.out.println("-------设定要指定任务--------") \x0d\x0a} \x0d\x0a}, 1000, 1000) \x0d\x0a} \x0d\x0a \x0d\x0a// 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。 \x0d\x0a// scheduleAtFixedRate(TimerTask task, long delay, long period) \x0d\x0apublic static void timer3() { \x0d\x0aTimer timer = new Timer() \x0d\x0atimer.scheduleAtFixedRate(new TimerTask() { \x0d\x0apublic void run() { \x0d\x0aSystem.out.println("-------设定要指定任务--------") \x0d\x0a} \x0d\x0a}, 1000, 2000) \x0d\x0a} \x0d\x0a \x0d\x0a// 第四种方法:安排指定的任务task在指定前启的时间firstTime开始进行重复的固定速率period执行. \x0d\x0a// Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period) \x0d\x0apublic static void timer4() { \x0d\x0aCalendar calendar = Calendar.getInstance() \x0d\x0acalendar.set(Calendar.HOUR_OF_DAY, 12)// 控制时 \x0d\x0acalendar.set(Calendar.MINUTE, 0) // 控制分 \x0d\x0acalendar.set(Calendar.SECOND, 0) // 控制秒 \x0d\x0a \x0d\x0aDate time = calendar.getTime()// 得出执行任务的时间,此处为今天的12:00:00 \x0d\x0a \x0d\x0aTimer timer = new Timer() \x0d\x0atimer.scheduleAtFixedRate(new TimerTask() { \x0d\x0apublic void run() { \x0d\x0aSystem.out.println("-------设定要指定任务--------") \x0d\x0a} \x0d\x0a}, time, 1000 * 60 * 60 * 24)// 这里设定将延时每天固定执行 \x0d\x0a} \x0d\x0a}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)