「java用多线程编写时钟」java编写时钟类

博主:adminadmin 2022-11-23 05:37:08 104

本篇文章给大家谈谈java用多线程编写时钟,以及java编写时钟类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用JAVA写数字时钟

import javax.swing.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.*;

import java.util.Calendar;

import java.util.GregorianCalendar;

class Clock extends JFrame implements ActionListener{

int x,y,x0,y0,r,h,olds_x,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,ss,mm,hh,old_m,old_h,ang;

final double RAD=Math.PI/180;

public Clock(){

super("Clock by kikiwawa");

setDefaultCloseOperation(3);

setSize(200,200);

setBackground(Color.BLACK);

setLocation(300,150);

setResizable(false);

setVisible(true);

int delay = 1000;

ActionListener drawClock = new ActionListener(){

public void actionPerformed(ActionEvent evt){

repaint();

}

};

new Timer(delay,drawClock).start();

}

public void actionPerformed(ActionEvent e){

}

public void paint(Graphics g){

Graphics2D g2D = (Graphics2D)g;

Insets insets = getInsets();

int L = insets.left/2,T = insets.top/2;

h = getSize().height;

g.setColor(Color.white);

g2D.setStroke(new BasicStroke(4.0f));

g.drawOval(L+40,T+40,h-80,h-80);

r=h/2-40;

x0=40+r-5+L;

y0=40+r-5-T;

ang=60;

for(int i=1;i=12;i++){

x=(int)((r+10)*Math.cos(RAD*ang)+x0);

y=(int)((r+10)*Math.sin(RAD*ang)+y0);

g.drawString(""+i,x,h-y);

ang-=30;

}

Calendar now= new GregorianCalendar();

int nowh= now.get(Calendar.HOUR_OF_DAY);

int nowm= now.get(Calendar.MINUTE);

int nows= now.get(Calendar.SECOND);

String st;

if(nowh10) st="0"+nowh;else st=""+nowh;

if(nowm10) st+=":0"+nowm;else st+=":"+nowm;

if(nows10) st+=":0"+nows;else st+=":"+nows;

g.setColor(Color.pink);

g.fillRect(L,T,50,28);

g.setColor(Color.blue);

g.drawString(st,L+2,T+26);

ss=90-nows*6;

mm=90-nowm*6;

hh=90-nowh*30-nowm/2;

x0=r+40+L;

y0=r+40+T;

if(olds_x0){

g.setColor(getBackground());

g.drawLine(x0,y0,olds_x,h-olds_y);

}

else{

old_m = mm;

old_h = hh;

}

x=(int)(r*0.9*Math.cos(RAD*ss))+x0;

y=(int)(r*0.9*Math.sin(RAD*ss))+y0-2*T;

g.setColor(Color.yellow);

g.drawLine(x0,y0,x,h-y);

olds_x=x;

olds_y=y;

g2D.setStroke(new BasicStroke(2.2f));

if(old_m!=mm){

g.setColor(getBackground());

g.drawLine(x0,y0,oldm_x,h-oldm_y);

}

x=(int)(r*0.7*Math.cos(RAD*mm))+x0;

y=(int)(r*0.7*Math.sin(RAD*mm))+y0-2*T;

g.setColor(Color.green);

g.drawLine(x0,y0,x,h-y);

oldm_x=x;

oldm_y=y;

old_m=mm;

g2D.setStroke(new BasicStroke(3.4f));

if(old_h!=hh){

g.setColor(getBackground());

g.drawLine(x0,y0,oldh_x,h-oldh_y);

}

x=(int)(r*0.5*Math.cos(RAD*hh))+x0;

y=(int)(r*0.5*Math.sin(RAD*hh))+y0-2*T;

g.setColor(Color.red);

g.drawLine(x0,y0,x,h-y);

oldh_x=x;

oldh_y=y;

old_h=hh;

}

public static void main(String[] args){

Clock c = new Clock();

}       }

4

运用java多线程技术,通过实现Runnable接口写一个电子时钟的应用程序RunnableClock

主方法应该这样写:

public static void main(String[] args)

{

Clock2 clock=new Clock2();

new Thread(clock).start();

}

此外,运行时是什么情况?最好描述一下,有助于别人理解。

java编写windows系统的日历和时钟

import java.lang.Carlendar;

import java.util.Date;

class Mytime extends Thread{ //继承 Thread 类,实现多线程

Thread thread = new Thread();

thread.Start();

public void fun()

{

while(true)

{

Date date = new Date();

thread.Sleep(1000); //设置一秒钟提取一次

txtTime.setText(date) //将时间显示到文本框里,还要提取一下,你自己搞了

}

}

}

日历不写了,

这是动态时间,

你有电脑就要自己调试一下,

我敢肯定是这样做的,

我现在忘记了一些,

这样不行你把thread.Start();

放到while里面去,

但是你改一改绝对会成功,

因为我做了

祝你成功

怎样用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编写时钟呀?

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怎么编写两个时钟同时计时

Timer timer = new Timer();

public static long midTime=1000;

timer.schedule(new TimerTask() {

public void run() {

midTime--;

long hh = midTime / 60 / 60 % 60;

long mm = midTime / 60 % 60;

long ss = midTime % 60;

System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");

 }

 }, 0, 1000);

 }

关于java用多线程编写时钟和java编写时钟类的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。