世界时钟java代码 java电子时钟

java中如何获取时区?

//我实现一个时钟窗口程序给你了,好让你更容易理解,希望对你有帮助。

龙文ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

import java.awt.*;

import java.awt.event.*;

import java.util.*;

//世界时钟

public class TimerTest {

public static void main(String[] args) {

new TimerTestFrame("世界时钟");

}

}

class TimerTestFrame extends Frame {

/**

*

*/

private static final long serialVersionUID = 1L;

public TimerTestFrame(String s) {

super(s);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

});

setLayout(new GridLayout(2, 6));

ClockCanvas clk1 = new ClockCanvas("北京", "GMT+8"); // 创建时钟

ClockCanvas clk2 = new ClockCanvas("巴黎", "GMT+2");

ClockCanvas clk3 = new ClockCanvas("华盛顿", "GMT-4");

ClockCanvas clk4 = new ClockCanvas("洛衫矶", "GMT-7");

ClockCanvas clk5 = new ClockCanvas("伦敦", "GMT+1");

ClockCanvas clk6 = new ClockCanvas("芝加哥", "GMT-5");

add(clk1);

add(clk2);

add(clk3);

add(clk4);

add(clk5);

add(clk6);

setSize(500, 350); // 设置框架宽高

setVisible(true);

}

}

class ClockCanvas extends Canvas implements Runnable {

/**

*

*/

private static final long serialVersionUID = 1L;

private int seconds = 0;

private String city;

private GregorianCalendar calendar;

Thread t;

public ClockCanvas(String c, String tz) {

city = c;

//也可以通过TimeZone.setTimeZone(String n)函数改变时区,n为时区参数名。

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

t = new Thread(this);

t.start();

setSize(125, 125); // 设置画布大小

setBackground(Color.black);

}

// 重写父类的方法绘制时钟图形

public void paint(Graphics g) {

Graphics2Dg2d = (Graphics2D) g;

BasicStroke bstroke = new BasicStroke(2.0f);

g2d.setStroke(bstroke);

g2d.setColor(Color.green);

g2d.drawOval(0, 0, 100, 100);

bstroke = new BasicStroke(5.0f);

g2d.setStroke(bstroke);

g2d.drawLine(50, 0, 50, 5);

g2d.drawLine(0, 50, 5, 50);

g2d.drawLine(50, 95, 50, 98);

g2d.drawLine(95, 50, 98, 50);

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);

bstroke = new BasicStroke(5.0f);

g2d.setStroke(bstroke);

g2d.drawLine(50, 50, 50 + (int) (30 * Math.cos(hourAngle)),

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

bstroke = new BasicStroke(3.0f);

g2d.setStroke(bstroke);

g2d.drawLine(50, 50, 50 + (int) (40 * Math.cos(minuteAngle)),

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

bstroke = new BasicStroke(1.0f);

g2d.setStroke(bstroke);

g2d.drawLine(50, 50, 50 + (int) (45 * Math.cos(secondAngle)),

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

g2d.setColor(Color.red);

g2d.drawString(city, 35, 115);

}

public void timeElapsed() {

//new Date()()获得当前时间

System.out.println(new Date()());

calendar.setTime(new Date()());

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

+ calendar.get(Calendar.MINUTE) * 60

+ calendar.get(Calendar.SECOND);

}

public void run() {

try {

while (true) {

Thread.sleep(300);

timeElapsed();

repaint();

}

} catch (InterruptedException e) {

}

}

}

java编程利用按钮实现时钟的停止和开始功能(原代码)

如下:

import java.awt.*;

import java.awt.event.*;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.Timer;

import java.awt.geom.*;

import java.util.*;

class Clock 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];

Clock()

{ 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;i59;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;i60;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;i60;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);

 Clock clock=new Clock();

 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画时钟代码

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编写世界时钟

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代码 java电子时钟
文章出自:http://myzitong.com/article/hgijcd.html