「JAVA获取时钟」Java获取小时

博主:adminadmin 2022-11-22 15:33:10 64

今天给各位分享JAVA获取时钟的知识,其中也会对Java获取小时进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用 java 写一个clock的类,100毫秒的时钟 求代码。。越简单越好。。最好有注释

这里有一个时钟的类,你看一下吧,不明白你的 100毫秒的时钟 是什么意思。

import java.awt.BasicStroke;

import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.geom.Line2D;

import java.util.Date;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.Timer;

public class ClockAs extends Canvas implements ActionListener {

static JButton jb = new JButton("开始");

static JButton jb1 = new JButton("暂停");

Date date;

Timer secondTime;

int hour, munite, second;

Line2D secondLine, muniteLine, hourLine;

int a, b, c;

double pointSX[] = new double[60],// 用来表示秒针端点坐标的数组

pointSY[] = new double[60], pointMX[] = new double[60], // 用来表示分针端点坐标的数组

pointMY[] = new double[60], pointHX[] = new double[60], // 用来表示时针端点坐标的数组

pointHY[] = new double[60];

ClockAs() {

secondTime = new Timer(1000, this);

pointSX[0] = 0; // 12点秒针位置

pointSY[0] = -100;

pointMX[0] = 0; // 12点分针位置

pointMY[0] = -90;

pointHX[0] = 0; // 12点时针位置

pointHY[0] = -70;

double angle = 6 * Math.PI / 180; // 刻度为6度

for (int i = 0; i 59; i++) // 计算出各个数组中的坐标

{

pointSX[i + 1] = pointSX[i] * Math.cos(angle) - Math.sin(angle)

* pointSY[i];

pointSY[i + 1] = pointSY[i] * Math.cos(angle) + pointSX[i]

* Math.sin(angle);

pointMX[i + 1] = pointMX[i] * Math.cos(angle) - Math.sin(angle)

* pointMY[i];

pointMY[i + 1] = pointMY[i] * Math.cos(angle) + pointMX[i]

* Math.sin(angle);

pointHX[i + 1] = pointHX[i] * Math.cos(angle) - Math.sin(angle)

* pointHY[i];

pointHY[i + 1] = pointHY[i] * Math.cos(angle) + pointHX[i]

* Math.sin(angle);

}

for (int i = 0; i 60; i++) {

pointSX[i] = pointSX[i] + 120; // 坐标平移

pointSY[i] = pointSY[i] + 120;

pointMX[i] = pointMX[i] + 120; // 坐标平移

pointMY[i] = pointMY[i] + 120;

pointHX[i] = pointHX[i] + 120; // 坐标平移

pointHY[i] = pointHY[i] + 120;

}

secondLine = new Line2D.Double(0, 0, 0, 0);

muniteLine = new Line2D.Double(0, 0, 0, 0);

hourLine = new Line2D.Double(0, 0, 0, 0);

secondTime.start(); // 秒针开始计时

}

public void paint(Graphics g) {

for (int i = 0; i 60; i++) // 绘制表盘上的小刻度和大刻度

{

int m = (int) pointSX[i];

int n = (int) pointSY[i];

if (i % 5 == 0) {

g.setColor(Color.red);

g.fillOval(m - 4, n - 4, 8, 8);

} else {

g.setColor(Color.cyan);

g.fillOval(m - 2, n - 2, 4, 4);

}

}

g.fillOval(115, 115, 10, 10); // 钟表中心的实心圆

Graphics2D g_2d = (Graphics2D) g;

g_2d.setColor(Color.red);

g_2d.draw(secondLine);

BasicStroke bs = new BasicStroke(3f, BasicStroke.CAP_ROUND,

BasicStroke.JOIN_MITER);

g_2d.setStroke(bs);

g_2d.setColor(Color.blue);

g_2d.draw(muniteLine);

bs = new BasicStroke(6f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);

g_2d.setStroke(bs);

g_2d.setColor(Color.green);

g_2d.draw(hourLine);

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == secondTime) {

date = new Date();

String s = date.toString();

hour = Integer.parseInt(s.substring(11, 13));

munite = Integer.parseInt(s.substring(14, 16));

second = Integer.parseInt(s.substring(17, 19)); // 获取时间中的秒

int h = hour % 12;

a = second; // 秒针端点的坐标

b = munite; // 分针端点的坐标

c = h * 5 + munite / 12; // 时针端点的坐标

secondLine.setLine(120, 120, (int) pointSX[a], (int) pointSY[a]);

muniteLine.setLine(120, 120, (int) pointMX[b], (int) pointMY[b]);

hourLine.setLine(120, 120, (int) pointHX[c], (int) pointHY[c]);

repaint();

}

if (e.getSource() == jb) {

secondTime.start();

}

if (e.getSource() == jb1) {

secondTime.stop();

}

}

public static void main(String args[]) {

JFrame win = new JFrame("时钟");

JPanel jp = new JPanel();

jp.add(jb);

jp.add(jb1);

ClockAs clock = new ClockAs();

jb.addActionListener(clock);

jb1.addActionListener(clock);

win.add(clock, BorderLayout.CENTER);

win.add(jp, "South");

win.setVisible(true);

win.setSize(246, 300);

win.setDefaultCloseOperation(3);

win.validate();

}

}

Java编写世界时钟

package Time;

import java.awt.*;

import javax.swing.*;

import java.util.*;

public class TimerTest extends JFrame{

TimerPanel tp;

TimerTest(){

setTitle("世界时钟");

setSize(500,300);

tp=new TimerPanel();

Thread t=new Thread(tp);

t.start();

this.add(tp);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

public static void main(String[] args) {

new TimerTest();

}

}

class TimerPanel extends JPanel implements Runnable{

Time[] t=new Time[6];

TimerPanel(){

t[0]=new Time(0,0,"北京",8);

t[1]=new Time(150,0,"巴黎",1);

t[2]=new Time(300,0,"华盛顿",8);

t[3]=new Time(0,150,"洛杉矶",5);

t[4]=new Time(150,150,"伦敦",0);

t[5]=new Time(300,150,"芝加哥",7);

setBackground(Color.black);

}

public void paint(Graphics g){

super.paint(g);

for(int i=0;it.length;i++)

t[i].draw(g);

}

public void run() {

while(true){

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

this.repaint();

}

}

}

/*上面就不注释了,下面的是Time类*/

class Time{

private int x,y;/*每个钟表的坐标*/

private String place;/*每个钟表的名字*/

private int timezone;/*每个钟表的时区,东x区为+x,西x区为-x*/

private Date d;

private long time;

private double hour,minite,second;

Time(int x,int y,String place,int timezone){

this.x=x;

this.y=y;

this.place=place;

this.timezone=timezone;

}

public void draw(Graphics g){

g.setColor(Color.green);

d=new Date();

time=d.getTime();/*获得0时区1970年1月1日0点到现在的毫秒数*/

hour=(((time/1000)+3600*timezone)%43200)*2*Math.PI/3600/12;/*计算时针弧度*/

minite=(time/1000)%3600*2*Math.PI/3600;/*计算分针弧度*/

second=(time/1000)%60*2*Math.PI/60;/*计算秒针弧度*/

/*画出钟表轮廓和时针*/

((Graphics2D)g).setStroke(new BasicStroke(3.0f));

((Graphics2D)g).drawOval(x, y, 100, 100);

((Graphics2D)g).drawLine(x+50, y, x+50, y+5);

((Graphics2D)g).drawLine(x+50, y+100, x+50, y+95);

((Graphics2D)g).drawLine(x, y+50, x+5, y+50);

((Graphics2D)g).drawLine(x+100,y+50, x+95, y+50);

((Graphics2D)g).drawLine(x+50,y+50,(int)(x+50+25*Math.sin(hour)),(int)(y+50-25*Math.cos(hour)));

/*画出分针*/

((Graphics2D)g).setStroke(new BasicStroke(2.0f));

((Graphics2D)g).drawLine(x+50,y+50,(int)(x+50+35*Math.sin(minite)),(int)(y+50-35*Math.cos(minite)));

/*画出秒针*/

((Graphics2D)g).setStroke(new BasicStroke(1.0f));

((Graphics2D)g).drawLine(x+50,y+50,(int)(x+50+45*Math.sin(second)),(int)(y+50-45*Math.cos(second)));

/*画出钟表名字*/

g.setColor(Color.red);

g.drawString(place, x+35, y+120);

}

}

写了好久,把分给我吧~~

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简单时钟

兄弟你也太吝啬了点吧,不给分的。。。

改动一,buf 没有初始化就是用了:

public void run() {

StringBuffer buf = new StringBuffer("");

while (true) {

buf = buf.append(Calendar.HOUR);

buf = buf.append(":");

buf = buf.append(Calendar.MINUTE);

buf = buf.append(":");

buf = buf.append(Calendar.SECOND);

f.getGraphics().drawString(buf.toString(), 0, 0);

buf = new StringBuffer("");

try {

t.sleep(1000);

} catch (Exception e) {}

}

}

改动二:画板尚未初始化就是用 Graphics 对象,肯定也会出现空指针错误:

t = new Thread(new Test());

f.setVisible(true); //先出现画面,在启动线程!

t.start();

能调试成没有 空指针 错误,但你的程序逻辑有问题,不会出现时钟,你还得好好设计设计!

good luck!

怎么用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输入时间显示钟表的程序如下:

import java.awt.BorderLayout;import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Clock extends JFrame implements ActionListener{ JLabel jl_hour=new JLabel("时");

JLabel jl_minute=new JLabel("分");

JLabel jl_second=new JLabel("秒");

JTextField jtf_hour=new JTextField(10);

JTextField jtf_minute=new JTextField(10);

JTextField jtf_second=new JTextField(10);

JButton jb_input=new JButton("显示");

JPanel jp_input=new JPanel();

ClockPanel jp_clock=new ClockPanel();

Clock(){

super("Clock");

jb_input.addActionListener(this);

jp_input.add(jtf_hour);jp_input.add(jl_hour);

jp_input.add(jtf_minute);jp_input.add(jl_minute);

jp_input.add(jtf_second);jp_input.add(jl_second);

jp_input.add(jb_input);

add(jp_input,BorderLayout.NORTH);

add(jp_clock,BorderLayout.CENTER);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(600,400);

this.setLocationRelativeTo(null);

setVisible(true);

}

public static void main(String[] args) {

new Clock();

}

public void actionPerformed(ActionEvent ae) {

if(ae.getSource()==jb_input){

int Hour=Integer.parseInt(jtf_hour.getText());

int Minute=Integer.parseInt(jtf_minute.getText());

int Second=Integer.parseInt(jtf_second.getText());

jp_clock.setHour(Hour);

jp_clock.setMinute(Minute);

jp_clock.setSecond(Second);

jp_clock.repaint();

}

}

}

class ClockPanel extends JPanel {

private double CenterX,CenterY;

private double Radius=150;

private double HPointX,HPointY,MPointX,MPointY,SPointX,SPointY;

private int Hour,Minute,Second;

private final double PI=3.1415926;

public int getHour() {

return Hour;

}

public void setHour(int hour) {

Hour = hour;

}

public int getMinute() {

return Minute;

}

public void setMinute(int minute) {

Minute = minute;

}

public int getSecond() {

return Second;

}

public void setSecond(int second) {

Second = second;

}

ClockPanel(){

this.Hour=0;

this.Minute=0;

this.Second=0;

}

ClockPanel(int Hour,int Minute,int Second){

this.Hour=Hour;

this.Minute=Minute;

this.Second=Second;

}

public void paintComponent(Graphics g){

super.paintComponent(g);

CenterX=this.getWidth()/2;

CenterY=this.getHeight()/2;

double HRadian=(PI/6)*Hour+(PI/360)*Minute+(PI/21600)*Second;

double MRadian=(PI/30)*Minute+(PI/1800)*Second;

double SRadian=(PI/30)*Second;

HPointX=CenterX+Radius*0.6*Math.sin(HRadian);

HPointY=CenterY-Radius*0.6*Math.cos(HRadian);

MPointX=CenterX+Radius*0.8*Math.sin(MRadian);

MPointY=CenterY-Radius*0.8*Math.cos(MRadian);

SPointX=CenterX+Radius*Math.sin(SRadian);

SPointY=CenterY-Radius*Math.cos(SRadian);

g.drawOval((int)(CenterX-Radius), (int)(CenterY-Radius), (int)(2*Radius),(int)(2*Radius));

g.drawString("12",(int)(CenterX),(int)(CenterY-Radius)+10);

g.drawString("3",(int)(CenterX+Radius)-6 , (int)(CenterY));

g.drawString("6", (int)(CenterX), (int)(CenterY+Radius));

g.drawString("9",(int)(CenterX-Radius), (int)(CenterY));

g.drawLine((int)(CenterX), (int)(CenterY), (int)(SPointX), (int)(SPointY));

g.drawLine((int)(CenterX), (int)(CenterY), (int)(MPointX), (int)(MPointY));

g.drawLine((int)(CenterX), (int)(CenterY), (int)(HPointX), (int)(HPointY));

}

}

JAVA获取时钟的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java获取小时、JAVA获取时钟的信息别忘了在本站进行查找喔。

The End

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