首页 > 文章列表 > java如何实现自定义时钟并走时功能

java如何实现自定义时钟并走时功能

java
441 2023-04-29

java如何实现自定义时钟并走时功能

效果图:

很多人想要自己用代码实现一个简单的时钟,显示时间,下面是我用JAVA写的一个时钟测试类

首先,我们先定义一个Time类,里面存放我们需要的setTime方法,可以自定义设定我们想要的时分秒,toUniversal()和toStandard()两个成员方法分别对应两种时间制,24小时和12小时。

public class Time {

    public int hour;

    public int minute;

    public int second;

    public Time(){

        setTime(0,0,0);

    };

    public void setTime(int h,int m,int s){

        this.hour=((h>=0&&h<24)?h:0);

        this.minute=((m>=0&&m<60)?m:0);

        this.second=((s>=0&&s<60)?s:0);

    }

    public String toUniversal(){

        return hour+":"+minute+":"+second;

    }

    public  String toStandard(){

        return((hour==12||hour==0)?12:hour%12)+":"+minute+":"+second

                +(hour<12?"AM":"PM");

    }

}

我们之后再写一个类,在里面实现我们的功能:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.Timer;

import java.util.*;

 

public class TimeTest{

    //全员静态变量

    static Integer i1=0,i2=0,i3=0;//时分秒

    static Time tt=new Time();//创建一个对象

    static TextField ta = new TextField(30);//两个文本框存放两个时间

    static TextField ka=new TextField(30);

    static Timer timer=new Timer();//设置一个Timer

    //设置静态函数进行时间转换和timer时间调度器

    public static void fun(){

        TimerTask task=new TimerTask() {

            @Override

            //run走针操作

            public void run() {

                if(i3==60)

                {i3=0;

                    i2++;

                    if(i2==60)

                    {

                        i1++;

                        i2=0;

                        if(i1==24){

                            i1=0;

                        }

                    }

                }

                tt.setTime(i1,i2,i3);

                String s1= tt.toUniversal();

                String s2=tt.toStandard();

                ta.setText(s1);//将获取的两个时间存放到文本域里面

                ka.setText(s2);

                i3++;//秒针自加

            }

        };

        timer.schedule(task,0,1000);//timer调度器从0开始,间隔一秒调度一次

    }

    public static void main(String[] args) {

        Frame frame = new Frame("钟表的测试类");

        TextField text1=new TextField("时");

        TextField text2=new TextField("分");

        TextField text3=new TextField("秒");

        JButton button=new JButton("确认");

        Font f=new Font("仿宋",Font.BOLD+Font.CENTER_BASELINE,30);

        ta.setFont(f);

        ka.setFont(f);

        ta.setBackground(Color.GRAY);

        ka.setBackground(Color.GRAY);

        text1.setFont(f);

        text2.setFont(f);

        text3.setFont(f);

        //button事件响应

        button.addActionListener(new ActionListener() {

            @Override

            public void actionPerformed(ActionEvent e) {

                String d0=text1.getText().trim();

 

                String d2=text2.getText().trim();

 

                String d3=text3.getText().trim();

                i1=Integer.valueOf(d0);

                i2=Integer.valueOf(d2);

                i3=Integer.valueOf(d3);

                tt.setTime(i1,i2,i3);

            }

        });

        //调用fun函数

        fun();

        Box aBox=Box.createVerticalBox();

        aBox.add(text1);

        aBox.add(text2);

        aBox.add(text3);

        aBox.add(button);

        Box bBox=Box.createVerticalBox();

        bBox.add(ta);

        bBox.add(ka);

        Box cBox = Box.createHorizontalBox();

        cBox.add(bBox);

        cBox.add(aBox);

        //将cBox加入到frame框架里面

        frame.add(cBox);

        //关闭frame窗口

        frame.addWindowListener(new WindowAdapter() {

            @Override

            public void windowClosing(WindowEvent e) {

                System.exit(0);

            }

        });

        frame.pack();

        frame.setVisible(true);

    }

}

里面用到了awt相关的类,做界面的时候很方便,大家如果看不懂,可以先去熟悉一下awt类,很容易上手,而且走时功能也只需要一个timer调度器便可以实现。