java小时钟代码,java简单时钟代码及详细解释

用JAVA编一个小闹钟

import java.awt.*;

创新互联专注于企业营销型网站建设、网站重做改版、稷山网站定制设计、自适应品牌网站建设、H5页面制作商城网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为稷山等各大城市提供网站开发制作服务。

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

import javax.swing.Timer;

public class Clock extends JFrame implements ActionListener {

public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8;

public final double RAD = Math.PI / 180.0;

int x, y, old_X, old_Y, r, x0, y0, w, h, ang;

int sdo, mdo, hdo, old_M, old_H, hh, mm, ss;

int delay = 1000;

Calendar now;

String st, alarm, Items1, Items2,str[];

JButton jb;

JComboBox jc1, jc2, jc3;

JLabel jl1, jl2, jl3, jl4;

JMenu jm1, jm2, jm3, jm4;

JMenuBar jmb;

JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7, jmi8, jmi9,jmi10;

JTextField jtf1, jtf2, time;

JPanel jp1, jp2, jp3;

Timer timer;

TimeZone tz = TimeZone.getTimeZone("JST");

Toolkit toolkit=Toolkit.getDefaultToolkit();;

/**

* br

* 方法说明:实现ActionListener类必须过载的方法

*/

public static void main(String[] args) {

Clock cp = new Clock();

cp.setVisible(true);

}

Clock() {

super("Java闹钟!");

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

setSize(550, 700);

setVisible(true);

Container contentPane = getContentPane();

jp2 = new JPanel();

jmb = new JMenuBar();

jm1 = new JMenu("背景颜色设置 ", true);

jmi1 = new JMenuItem("外圈颜色");

jmi1.addActionListener(this);

jmi1.setActionCommand("color1");

jm1.add(jmi1);

jmi2 = new JMenuItem("闹钟边线颜色");

jmi2.addActionListener(this);

jmi2.setActionCommand("color2");

jm1.add(jmi2);

jmi3=new JMenuItem("底盘颜色");

jmi3.addActionListener(this);

jmi3.setActionCommand("color3");

jm1.add(jmi3);

jmi4=new JMenuItem("系统时间背静颜色");

jmi4.addActionListener(this);

jmi4.setActionCommand("color4");

jm1.add(jmi4);

jmb.add(jm1);

jm2 = new JMenu("指针颜色设置 ", true);

jmi5 = new JMenuItem("秒针颜色");

jmi5.addActionListener(this);

jmi5.setActionCommand("color5");

jm2.add(jmi5);

jmi6 = new JMenuItem("分针颜色");

jmi6.addActionListener(this);

jmi6.setActionCommand("color6");

jm2.add(jmi6);

jmi7 = new JMenuItem("时针颜色");

jmi7.addActionListener(this);

jmi7.setActionCommand("color7");

jm2.add(jmi7);

jmb.add(jm2);

jm3 = new JMenu("闹铃声音设置 ", true);

jmi8 = new JMenuItem("响铃1");

jmi8.addActionListener(this);

jmi8.setActionCommand("ring1");

jm3.add(jmi8);

jmi9 = new JMenuItem("静音");

jmi9.addActionListener(this);

jmi9.setActionCommand("ring2");

jm3.add(jmi9);

jmb.add(jm3);

jm4 = new JMenu("帮助 ", true);

jmi10=new JMenuItem("使用说明");

jmi10.addActionListener(this);

jmi10.setActionCommand("help");

jm4.add(jmi10);

jmb.add(jm4);

jp2.add(jmb);

contentPane.add(jp2, BorderLayout.NORTH);

jp3 = new JPanel();

jl1 = new JLabel("闹铃时间");

jl1.setFont(new Font("楷体_GB2312", Font.BOLD, 18));

time = new JTextField("00:00", 5);

alarm = time.getText();

jb = new JButton("修改闹铃时间");

jb.addActionListener(this);

jb.setActionCommand("CC");

jp3.add(jl1);

jp3.add(time);

jp3.add(jb);

contentPane.add(jp3, BorderLayout.SOUTH);

ClockPanel clock = new ClockPanel();

contentPane.add(clock, BorderLayout.CENTER);

// 窗体添加事件监听,监听秒表的触发

ActionListener taskPerformer = new ActionListener() {

public void actionPerformed(ActionEvent evt) {

repaint();

}

};

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

}

/**

* br

* 方法说明:绘制图形

*/

Color C1 = Color.lightGray;// 外圈颜色

Color C2 = Color.black;// 边线颜色

Color C3 = Color.magenta;// 内盘颜色

Color C4 = Color.blue;// 背景颜色

Color C5 = Color.yellow;// 秒针颜色

Color C6 = Color.green;// 分针颜色

Color C7 = Color.red;//时针颜色

public class ClockPanel extends JPanel {

public void paint(Graphics g) {

h = getSize().height - 200;

// 绘制圆形

g.setColor(C1);

g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60);

g.setColor(C2);

g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62);

g.setColor(C3);

g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100);

g.setColor(C2);

g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102);

r = h / 2 - 30;

x0 = 30 + r - 5 + L0;

y0 = 30 + r - 5 - T0;

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;

}

x0 = 30 + r + L0;

y0 = 30 + r + T0;

g.drawString("指针式时钟", 215, 200);

// 获取时间

now = Calendar.getInstance();

hh = now.get(Calendar.HOUR_OF_DAY);// 小时

mm = now.get(Calendar.MINUTE);// 分钟

ss = now.get(Calendar.SECOND);// 秒

g.setColor(C4);

g.fillRect(5, 550, 150, 30);// 填充的矩形

g.setColor(C6);

if (hh 10)

st = "0" + hh;

else

st = "" + hh;

if (mm 10)

st = st + ":0" + mm;

else

st = st + ":" + mm;

if(alarm.equals(st))

{

if(toolkit!=null)

toolkit.beep();

else {}

}

if (ss 10)

st = st + ":0" + ss;

else

st = st + ":" + ss;

{

g.setFont(new Font("华文楷体", Font.BOLD, 16));

g.drawString("系统时间:" + st, 10, 570);

}

// 计算时间和图形的关系

sdo = 90 - ss * 6;

mdo = 90 - mm * 6;

hdo = 90 - hh * 30 - mm / 2;

// 擦除秒针

if (old_X 0) {

g.setColor(C3);

} else {

old_M = mdo;

old_H = hdo;

}

// 绘制秒针

g.setColor(C5);

x = (int) ((r - 26) * Math.cos(RAD * sdo) + x0);

y = (int) ((r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0;

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

old_X = x;

old_Y = y;

// 擦除分针和时针

if (mdo != old_M) {

g.setColor(C3);

old_M = mdo;

}

if (hdo != old_H) {

g.setColor(C3);

old_H = hdo;

}

// 绘制分针

g.setColor(C6);

x = (int) ((r - 50) * Math.cos(RAD * mdo) + x0);

y = (int) ((r - 50) * Math.sin(RAD * mdo) + y0) - 2 * T0;

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

// 绘制时针

g.setColor(C7);

x = (int) ((r - 90) * Math.cos(RAD * hdo) + x0);

y = (int) ((r - 90) * Math.sin(RAD * hdo) + y0) - 2 * T0;

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

} // end paint

}

// 闹铃时间的判断及实现

// 闹铃声音的实现

public void actionPerformed(ActionEvent e) {

// JMenuItem m = (JMenuItem) e.getSource();

if (e.getActionCommand() == "CC") {

int newHou, newMin;

char c;

String getTime = JOptionPane.showInputDialog(this, "请输入闹铃时间格式如:", "00:00");

repaint();

//如果撤消设置时间,就什么打印null

if(getTime==null)

System.out.println(getTime);

// dispose();

judge: if (getTime != null) {

//打印输入的设置的时间

System.out.println(getTime);

// 判断输入的是不是5位字符

if (getTime.length() != 5) {

JOptionPane.showMessageDialog(time, "格式错误\n请按格式输入5位数字", "Error",

JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

// 判断输入的是不是数字

for (int i = 0; i (getTime.length()); i++) {

c = getTime.charAt(i);

if (i == 2 !Character.isDigit(c))

continue;

// 判断当前字符,如果不是数字则跳出该事件

if (i != 2 !Character.isDigit(c)) {

JOptionPane.showMessageDialog(this, "格式错误\n请按格式输入5位数字",

"Error",JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

}

char[] hour = { getTime.charAt(0), getTime.charAt(1) };

char[] minute = { getTime.charAt(3), getTime.charAt(4) };

newHou = Integer.parseInt(String.valueOf(hour));

newMin = Integer.parseInt(String.valueOf(minute));

if (newHou = 24 || newHou 0) {

JOptionPane.showMessageDialog(this, "格式错误\n小时应该是不小于0不大于23的正数",

"Error", JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

if (newMin = 60 || newHou 0) {

JOptionPane.showMessageDialog(this, "格式错误\n分钟应该是小于60的正数", "Error",

JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

new SetTime(newHou, newMin);

}

}

if (e.getActionCommand() == "ring1") {

toolkit=Toolkit.getDefaultToolkit();

}

if(e.getActionCommand() == "ring2"){

System.out.println("静音");

toolkit=null;

}

if (e.getActionCommand() == "color1") {

String color;

Color c;

System.out.println("color1");

color = JOptionPane.showInputDialog(this, "请输入喜欢的外圈颜色(0--255)", "128");

if (color == null) {

} else {

if (Integer.parseInt(color) 0

|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的外圈颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C1 = c;

}

}

}

if(e.getActionCommand() == "color2"){

String color;

Color c;

System.out.println("color2");

color = JOptionPane.showInputDialog(this, "请输入喜欢的边线颜色(0--255)", "128");

if(color==null){}

else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的边线颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C2 = c;

}

}

}

if(e.getActionCommand() == "color3"){

String color;

Color c;

System.out.println("color3");

color = JOptionPane.showInputDialog(this, "请输入喜欢的内盘颜色(0--255)", "128");

if(color==null){}

else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的内盘颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C3 = c;

}

}

}

if(e.getActionCommand() == "color4"){

String color;

Color c;

System.out.println("color4");

color = JOptionPane.showInputDialog(this, "请输入喜欢的背景颜色(0--255)", "128");

if(color==null){}

else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的背景颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C4 = c;

}

}

}

if(e.getActionCommand() == "color5"){

String color;

Color c;

System.out.println("color5");

color = JOptionPane.showInputDialog(this, "请输入喜欢的秒针颜色(0--255)", "128");

if(color==null){}

else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的秒针颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C5 = c;

}

}

}

if(e.getActionCommand() == "color6"){

String color;

Color c;

System.out.println("color6");

color = JOptionPane.showInputDialog(this, "请输入喜欢的分针颜色(0--255)", "128");

if(color==null){}

else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的分针颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C6 = c;

}

}

}

if(e.getActionCommand() == "color7"){

String color;

Color c;

System.out.println("color7");

color = JOptionPane.showInputDialog(this, "请输入喜欢的时针颜色(0--255)", "128");

if(color==null){}

else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)

JOptionPane.showInputDialog(this, "请输入喜欢的时针颜色(0--255)", "128");

else {

c = new Color(Integer.parseInt(color));

C7 = c;

}

}

}

if(e.getActionCommand() == "help"){

String help;

help = JOptionPane.showInputDialog(this, "输入quit退出该闹钟的使用", "这是运行在Java中的指针式时钟");

if(help.equals("quit"))

dispose();

else {}

// timer.restart();

}

}

class SetTime {

String Hour;

String Minute;

public SetTime() { }

public SetTime(int hour, int minute) {

// 当时间参数小于10的时候在前面添加字符0

if (hour 10) {

Hour = "0" + String.valueOf(hour);

} else {

Hour = "" + String.valueOf(hour);

}

if (minute 10) {

Minute = "0" + String.valueOf(minute);

} else {

Minute = "" + String.valueOf(minute);

}

alarm = Hour + ":" + Minute;

time.setText(alarm);

repaint();

}

}

}

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

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简单时钟代码及详细解释
文章网址:http://hbruida.cn/article/hcheed.html