面向对象思想写成:
下面是一个显示器类
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)?{
for(;;)?{
d.increase();
System.out.println(d.getValue());
下面创建一个时钟对象:
public?class?Clock?{
public?void?start?()?{
s.increase();
if(s.getValue()?==?0){//如果分重置,小时+1
min.increase();
if(min.getValue()?==?0){//如果分重置,小时+1
h.increase();
Clock?clock?=?new?Clock();
clock.start();
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
public class Test extends JFrame implements ActionListener{
Timer t=new Timer(1000,this);
GregorianCalendar calendar=new GregorianCalendar();
JLabel label1=new JLabel(new Date().toString()),
");
public Test(){
super("TIME");
Container c=this.getContentPane();
c.setLayout(new FlowLayout());
t.start();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
public void actionPerformed(ActionEvent e){
Date date=new Date();
calendar.setTime(date);
if(e.getSource()==t){
label1.setText(date.toString());
if(calendar.get(Calendar.MINUTE)==0)//当分钟为0报时
public static void main (String[] args) {
new Test();
import
java.util.*;
java.awt.*;
java.applet.*;
//impelements
Runnable
是线程程序的接口
public
class
Clock
extends
Applet
implements
{
Thread
timer
=
null;
//
定义线程实体timer
int
xcenter
ycenter
Radius
-
void
init()
设置时钟程序的窗口大小
setBackground(Color.white);//
设置小应用程序的背景色
paint(Graphics
g)
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);
消除小应用程序
向左移动一个像素点
if
(xcenter
计算秒的坐标
xs
(int)
(Math.cos(s
*
/
(Radius
+
xcenter);
ys
(Math.sin(s
ycenter);
计算分钟的坐标
xm
(Math.cos(m
①.0)
ym
(Math.sin(m
计算小时的坐标
xh
(Math.cos((h
yh
(Math.sin((h
g.setColor(Color.darkGray);
设置颜色
①.0),
①.0));
g.drawString(today,
显示字符串时钟
g.drawLine(xcenter,
ycenter,
ys);
画秒针
g.setColor(Color.blue);
g.drawArc(xcenter
Radius,
画钟
ym);
画分针
g.drawLine(xcenter
yh);
画时针
start()
(timer
==
null)
Thread(this);
生成Thread(多线程程序)的对象实体
timer.start();
启动生成的线程
stop()
timer.stop();
停止线程的工作
放掉Thread对象
run()
改方法用来定义线程体,一旦线程被启动执行,就开始执行这个方法
while
!=
try
使当前正在执行的线程进入睡眠时间由参数millis确定,
单位时间是毫秒,当这个时间过去,线程即可运行的
使用当前正在执行的线程进入睡眠时间由参数
millis确定,单位是毫秒,当这个时间过去,线程即为可运行的
catch
(InterruptedException
e)
repaint();
repaint所做的事其实是去调用方法uadate重画效应用程序
所做的工作是先将整个效应用程序区域清除,再去调用paint,完成重画的动作
update(Graphics
paint(g);
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;
public?ClockPointer(){
super("Java时钟");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image?image?=?getToolkit().getImage("clock.gif");
setIconImage(image);
setBackground(Color.white);
this.setLocationRelativeTo(null);
setResizable(true);
int?delay?=?1000;
//创建一个监听事件
setVisible(true);
ActionListener?drawClock?=?new?ActionListener(){
public?void?actionPerformed(ActionEvent?evt){
};
//创建一个时间计数器,每一秒触发一次
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);
Insets?insets?=?getInsets();
h?=?getSize().height;
g.setColor(Color.white);
//画圆
g.setColor(Color.gray);
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);
//获得现在的时间
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);
//计算时间与度数的关系
//擦除秒针
//if(olds_x?0){
//?g.setColor(getBackground());
//?//?g.setColor(Color.gray);
//?g.drawLine(x0,?y0,?olds_x,?h-olds_y);?//?(?)
//}
//绘制秒针
g.setColor(Color.yellow);
g.drawLine(x0,?y0,?x,?h-y);
olds_x?=?x;
olds_y?=?y;
//擦除分针
//if(old_m!=mm){
//?g.drawLine(x0,y0,oldm_x,h-oldm_y);
//绘制分针
g.setColor(Color.green);
g.drawLine(x0,y0,x,h-y);
oldm_x?=?x;
oldm_y?=?y;
old_m?=?mm;
//擦除时针
//if(old_h!=hh){
//?g.drawLine(x0,y0,oldh_x,h-oldh_y);
//绘制时针
g.setColor(Color.red);
oldh_x?=?x;
oldh_y?=?y;
old_h?=?hh;
public?static?void?main(String[]?args){
new?ClockPointer();
//整理一下
以上就是土嘎嘎小编为大家整理的java的时钟代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!