「java转盘时钟」java做时钟

博主:adminadmin 2022-12-26 12:42:10 65

本篇文章给大家谈谈java转盘时钟,以及java做时钟对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

跪求JAVA时钟程序~简单点的~~实训用~~

import java.awt.*;

import javax.swing.*;

import java.util.*;

//定义测试类

//所有变量名冲突的变量名串1了,不过就效果不好~~

public class TimerTest

{

//定义主函数

public static void main(String[] args)

{

//定义JFrame类的一个对象,并创建该对象

MyTimer1 f = new MyTimer1();

//调用MyTimer的show()方法

f.show();

//----------------------------------------------------

//调用类的构造函数

MyTimer myTimer=new MyTimer();

//调用类的显示时间函数

myTimer.displayCurrentTime();

//调用类的设置时间函数

myTimer.setCurrentTime();

//调用类的显示时间函数

myTimer.displayCurrentTime();

//调用类的显示时间函数

myTimer.displayCurrentTime();

System.exit(0);

}

}

//定义MyTimer类

class MyTimer1 extends JFrame

{ static int count=0; //判断是否重定义了时间

//构造函数

public MyTimer1()

{

//定义窗口大小

setSize(320, 200);

//定义窗口标题

setTitle("测试自定义时钟类!");

Container c = getContentPane();

// new ClockCanvas("北京时间", "GMT+8")

c.add(new ClockCanvas("北京时间", "GMT+8"));

}

}

//定义接口

interface TimerListener1

{

void timeElapsed(Timer1 t);

}

class Timer1 extends Thread //类Timer1

{

private TimerListener1 target;

private int interval;

public Timer1(int i, TimerListener1 t)

{

target = t;

interval = i;

setDaemon(true);

}

public void run()

{ try

{

while (!interrupted())

{

sleep(interval);

target.timeElapsed(this);

}

}

catch(InterruptedException e) {}

}

}

class ClockCanvas extends JPanel //clockcanvas

implements TimerListener1

{

static int seconds = 0;

private String city;

private GregorianCalendar calendar;

//构造函数

public ClockCanvas(String c, String tz)

{

city = c;

calendar = new GregorianCalendar(TimeZone.getTimeZone(tz));

Timer1 t = new Timer1(1000, this);

t.start();

setSize(180, 180);

}

//绘制钟面

public void paintComponent(Graphics g)

{

super.paintComponent(g);

g.drawOval(100, 5, 120, 120);

g.drawOval(101, 6, 118, 118);

//分离时间

double hourAngle = 2 * Math.PI

* (seconds - 3 * 60 * 60) / (12 * 60 * 60);

double minuteAngle = 2 * Math.PI

* (seconds - 15 * 60) / (60 * 60);

double secondAngle = 2 * Math.PI

* (seconds - 15) / 60;

g.drawLine(160, 64, 160 + (int)(20* Math.cos(hourAngle)),

64 + (int)(30 * Math.sin(hourAngle)));

g.drawLine(160, 65, 160 + (int)(20* Math.cos(hourAngle)),

65 + (int)(30 * Math.sin(hourAngle)));

g.drawLine(160, 66, 160 + (int)(20* Math.cos(hourAngle)),

66 + (int)(30 * Math.sin(hourAngle)));

g.drawLine(160, 63, 160 + (int)(20* Math.cos(hourAngle)),

63 + (int)(30 * Math.sin(hourAngle)));

g.drawLine(160, 67, 160 + (int)(20* Math.cos(hourAngle)),

67 + (int)(30 * Math.sin(hourAngle)));

g.drawLine(160, 65, 160 + (int)(32* Math.cos(minuteAngle)),

65 + (int)(40 * Math.sin(minuteAngle)));

g.drawLine(160, 64, 160 + (int)(32* Math.cos(minuteAngle)),

64 + (int)(40 * Math.sin(minuteAngle)));

g.drawLine(160, 65, 160 + (int)(55* Math.cos(secondAngle)),

65 + (int)(45 * Math.sin(secondAngle)));

g.drawString(city, 130, 150);//*/

}

public void timeElapsed(Timer1 t)

{

calendar.setTime(new Date());

if(MyTimer1.count==1) {int a=1;

seconds=MyTimer.intHour*60*60+MyTimer.intMinute*60+MyTimer.intSecond;

seconds+=a;//a为秒自加

repaint();}

else

{ seconds = calendar.get(Calendar.HOUR) * 60 * 60

+ calendar.get(Calendar.MINUTE) * 60

+ calendar.get(Calendar.SECOND);

repaint();}

}

}

//定义时钟类

class MyTimer

implements TimerListener

{

//定义时钟类的属性

static int intHour,intMinute,intSecond;

//构造函数

public MyTimer()

{

setCurrentTimeAsSystemTime();

Timer t = new Timer(1000, this); //实例Timer类,里面有run方法

t.start();

}

//显示当前时间

public void displayCurrentTime()

{

JOptionPane.showMessageDialog(null,intHour+":"+intMinute+":"+intSecond);

}

//设定当前时间

public void setCurrentTime()

{

//从对话框输入时,分秒

String strTemp=JOptionPane.showInputDialog(null,"请输入当前小时(24小时制):");

int iHour=Integer.parseInt(strTemp);

strTemp=JOptionPane.showInputDialog(null,"请输入当前分:");

int iMinute=Integer.parseInt(strTemp);

strTemp=JOptionPane.showInputDialog(null,"请输入当前秒:");

int iSecond=Integer.parseInt(strTemp);

//设定当前时间为对话框输入的时间

if(iHour=0iHour24)

intHour=iHour;

else intHour=0;

if(iMinute=0iMinute60)

intMinute=iMinute;

else intMinute=0;

if(iSecond=0iSecond60)

intSecond=iSecond;

MyTimer1.count++;

// ClockCanvas.seconds=iHour*60*60+iMinute*60+iSecond;

}

//设定当前时间为系统时间,构造函数调用

public void setCurrentTimeAsSystemTime()

{

//定义Date类的一个对象,用来获取系统时间

Date timeCurrent=new Date();

//将系统的时,分秒设定为当前时间

intHour=timeCurrent.getHours();

intMinute=timeCurrent.getMinutes();

intSecond=timeCurrent.getSeconds();

}

//走时

public void timeElapsed(Timer t)

{

//系统走时

intSecond++;

if (intSecond==60)

{

intMinute++;

intSecond=0;

}

if (intMinute==60)

{

intHour++;

intMinute=0;

}

if (intHour==24)

{

intHour=0;

}

}

}

interface TimerListener //接口了

{

void timeElapsed(Timer t);

}

class Timer extends Thread //类啊!!!

{

private TimerListener target;

private int interval;

public Timer(int i, TimerListener t)

{

target = t;

interval = i;

setDaemon(true); //Thread 里面方法 目的跟着老大走

}

public void run()

{ try

{

while (!interrupted())

{

sleep(interval);

target.timeElapsed(this);

}

}

catch(InterruptedException e) {}

}

}

JAVA画时钟代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import sun.util.calendar.Gregorian;

import java.util.Calendar;

import java.util.GregorianCalendar;

public class ClockPointer extends JFrame{

        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 ClockPointer(){

        super("Java时钟");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Image image = getToolkit().getImage("clock.gif");

        setIconImage(image);

        setSize(400,400);

        setBackground(Color.white);

        //setLocation(300,150);

        this.setLocationRelativeTo(null);

        setResizable(true);

        int delay = 1000;

        //创建一个监听事件

        setVisible(true);

        ActionListener drawClock = new ActionListener(){

            public void actionPerformed(ActionEvent evt){

                repaint();

            }

        };

        //创建一个时间计数器,每一秒触发一次

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

    }

    

    java.text.SimpleDateFormat fmTime = new java.text.SimpleDateFormat("HH:mm:ss");

    //绘制图形

    public void paint(Graphics g){

        super.paint(g);

        g.setFont(null);

        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(2.0f));

        g.setColor(Color.gray);

        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;

        //绘制时钟上的12个字

        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.setColor(Color.black);

            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=fmTime.format(now.getTime());

        //在窗体上显示时间

        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;

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

        //擦除秒针

        //if(olds_x  0){

        //    g.setColor(getBackground());

        //    // g.setColor(Color.gray);

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

        //}

        //绘制秒针

        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.2f));

        //擦除时针

        //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){

        new ClockPointer();

    }

}

//整理一下

怎样用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编写转盘游戏

你可以用一个数组存放36个数,使用Math.random()*length——随机取出数组中的一个数字,与玩家押的数字比较。

怎么用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转盘时钟的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java做时钟、java转盘时钟的信息别忘了在本站进行查找喔。

The End

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