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

很多人想要自己用代碼實現(xiàn)一個簡單的時鐘,顯示時間,下面是我用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");
? ? }
}我們之后再寫一個類,在里面實現(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();//設置一個Timer
? ? //設置靜態(tài)函數(shù)進行時間轉換和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("確認");
? ? ? ? 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);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //調(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);
? ? ? ? //關閉frame窗口
? ? ? ? frame.addWindowListener(new WindowAdapter() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void windowClosing(WindowEvent e) {
? ? ? ? ? ? ? ? System.exit(0);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? frame.pack();
? ? ? ? frame.setVisible(true);
? ? }
}里面用到了awt相關的類,做界面的時候很方便,大家如果看不懂,可以先去熟悉一下awt類,很容易上手,而且走時功能也只需要一個timer調(diào)度器便可以實現(xiàn)。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot自定義注解之實現(xiàn)AOP切面日志詳解
這篇文章主要為大家詳細介紹了SpringBoot自定義注解之實現(xiàn)AOP切面統(tǒng)一打印出入?yún)⑷罩荆闹惺纠a介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09
淺談mybatis-plus批量保存異常及效率優(yōu)化
本文主要介紹了mybatis-plus批量保存異常及效率優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01
Java 8 開發(fā)的 Mybatis 注解代碼生成工具
MybatisAnnotationTools 是基于 Java8 開發(fā)的一款可以用于自動化生成 MyBatis 注解類的工具,支持配置數(shù)據(jù)源、類路徑,表名去前綴、指定類名前后綴等功能.這篇文章主要介紹了Java 8 開發(fā)的 Mybatis 注解代碼生成工具 ,需要的朋友可以參考下2019-07-07
SpringBoot集成redis實現(xiàn)共享存儲session
這篇文章主要介紹了SpringBoot集成redis實現(xiàn)共享存儲session的流程步驟,文中通過代碼示例介紹的非常詳細,并總結了一些常見的錯誤及解決方法,需要的朋友可以參考下2024-03-03

