用java编写一个时钟的程序

用java编写一个时钟的程序,第1张

我给你做了一下:(第二个功带码或能蠢伍你自己加吧)

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

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)

}

}

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}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8261511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存