java實現(xiàn)自定義時鐘并實現(xiàn)走時功能
本文實例為大家分享了java自定義時鐘并實現(xiàn)走時功能的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:

很多人想要自己用代碼實現(xiàn)一個簡單的時鐘,顯示時間,下面是我用JAVA寫的一個時鐘測試類
首先,我們先定義一個Time類,里面存放我們需要的setTime方法,可以自定義設(shè)定我們想要的時分秒,toUniversal()和toStandard()兩個成員方法分別對應(yīng)兩種時間制,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");
? ? }
}我們之后再寫一個類,在里面實現(xiàn)我們的功能:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Timer;
import java.util.*;
?
public class TimeTest{
? ? //全員靜態(tài)變量
? ? static Integer i1=0,i2=0,i3=0;//時分秒
? ? static Time tt=new Time();//創(chuàng)建一個對象
? ? static TextField ta = new TextField(30);//兩個文本框存放兩個時間
? ? static TextField ka=new TextField(30);
? ? static Timer timer=new Timer();//設(shè)置一個Timer
? ? //設(shè)置靜態(tài)函數(shù)進行時間轉(zhuǎn)換和timer時間調(diào)度器
? ? 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調(diào)度器從0開始,間隔一秒調(diào)度一次
? ? }
? ? 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("確認(rèn)");
? ? ? ? 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事件響應(yīng)
? ? ? ? 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);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //調(diào)用fun函數(shù)
? ? ? ? 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);
? ? ? ? //關(guān)閉frame窗口
? ? ? ? frame.addWindowListener(new WindowAdapter() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void windowClosing(WindowEvent e) {
? ? ? ? ? ? ? ? System.exit(0);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? frame.pack();
? ? ? ? frame.setVisible(true);
? ? }
}里面用到了awt相關(guān)的類,做界面的時候很方便,大家如果看不懂,可以先去熟悉一下awt類,很容易上手,而且走時功能也只需要一個timer調(diào)度器便可以實現(xiàn)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于springboot+jwt實現(xiàn)刷新token過程解析
這篇文章主要介紹了基于springboot+jwt實現(xiàn)刷新token過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
java中char類型轉(zhuǎn)換成int類型的2種方法
這篇文章主要給大家介紹了關(guān)于java中char類型轉(zhuǎn)換成int類型的2種方法,因為java是一門強類型語言,所以在數(shù)據(jù)運算中會存在類型轉(zhuǎn)換,需要的朋友可以參考下2023-07-07
mybatis教程之查詢緩存(一級緩存二級緩存和整合ehcache)
這篇文章主要介紹了mybatis教程之查詢緩存(一級緩存二級緩存和整合ehcache),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式總結(jié)
這篇文章主要介紹了SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01
Java實現(xiàn)的簡單數(shù)字處理類及用法示例
這篇文章主要介紹了Java實現(xiàn)的簡單數(shù)字處理類及用法,涉及java數(shù)字運算相關(guān)操作技巧,需要的朋友可以參考下2018-01-01

