java實現(xiàn)秒表功能
更新時間:2022年09月11日 08:27:02 作者:Jiafu_Liu
這篇文章主要為大家詳細介紹了java實現(xiàn)秒表功能,利用javax.swing.Timer類設計實現(xiàn)秒表應用程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
利用javax.swing.Timer類設計并實現(xiàn)一個模擬秒表功能的應用程序。程序中顯示不斷遞增的時間,同時包含允許用戶啟動和終止計時功能的代碼,以及一個可將時間復位為0的按鈕。
import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.BorderLayout;? import java.util.TimerTask; ? import java.text.DecimalFormat; import java.awt.Color;? import java.awt.GridLayout;? import java.awt.Graphics; import java.awt.Dimension; import java.awt.Font; public class stopWatch extends JPanel{ ? ? ? private JLabel currentTimeLabel; //顯示標簽? ? ? private JButton startJButton; ? ?//開始按鈕 ? ? private JButton stopJButton; ? ? //停止按鈕 ? ? private JButton resetJButton; ? ?//復位按鈕 ? ? private long countMis,countSec,countMin,countHour;//計時變量 ? ? private DecimalFormat textFormat=new DecimalFormat("00");//格式化輸出 ? ? Timer timer=new Timer(10,new TestActionListener());//計時單位10ms ? ? public stopWatch() { ? ? ? ? ? JPanel panel=new JPanel(new GridLayout(1,3,5,10)); //網(wǎng)格布局嵌入按鈕 ? ? ? ? JPanel panel2=new JPanel();? ? ? ? ? currentTimeLabel=new JLabel(" ");? ? ? ? ? TestActionListener actionListener=new TestActionListener(); ? ? ? ? currentTimeLabel.setForeground(Color.blue); ? ? ? ? currentTimeLabel.setFont(new Font("SAN_SERIF",Font.BOLD,50)); ? ? ? ? ? startJButton=new JButton("Start");? ? ? ? ? stopJButton=new JButton("Stop");? ? ? ? ? resetJButton=new JButton("Reset");? ? ? ? ? //設置JButton相關屬性 ? ? ? ? startJButton.setBorder(BorderFactory.createRaisedBevelBorder()); ? ? ? ? stopJButton.setBorder(BorderFactory.createRaisedBevelBorder()); ? ? ? ? resetJButton.setBorder(BorderFactory.createRaisedBevelBorder()); ? ? ? ? startJButton.setFont(new java.awt.Font("Times New Roman", 1, 30)); ? ? ? ? stopJButton.setFont(new java.awt.Font("Times New Roman", 1, 30)); ? ? ? ? resetJButton.setFont(new java.awt.Font("Times New Roman", 1, 30)); ? ? ? ? stopJButton.setBackground(Color.cyan);? ? ? ? ? startJButton.setBackground(Color.red); ? ? ? ? resetJButton.setBackground(Color.orange); ? ? ? ? stopJButton.addActionListener(actionListener); ? ? ? ? ? startJButton.addActionListener(actionListener); ? ? ? ? ? resetJButton.addActionListener(actionListener); ? ? ? ? ? this.setLayout(new BorderLayout()); ? ? ? ? ? panel2.setBackground(Color.gray); ? ? ? ? panel2.setBorder(BorderFactory.createLoweredBevelBorder()); ? ? ? ? ? panel2.add(currentTimeLabel);? ? ? ? ? panel.add(stopJButton); ? ? ? ? ? panel.add(startJButton); ? ? ? ? ? panel.add(resetJButton);? ? ? ? ? this.add(panel2,BorderLayout.NORTH);? ? ? ? ? this.add(panel,BorderLayout.CENTER); ? ? } ? ? ? //處理相關事件 ? ? class TestActionListener implements ActionListener{ ?? ? ? ? ? public void actionPerformed(ActionEvent e){? ? ? ? ? ? ? if(e.getSource()==startJButton){ ? ? ? ? ? ? ? ? timer.start(); ? ? ? ? ? ? ? ? startJButton.setEnabled(false); ? ? ? ? ? ? } ? ? ? ? ? ? ? else if(e.getSource()==stopJButton){ ? ? ? ? ? ? ? ? timer.stop(); ? ? ? ? ? ? ? ? startJButton.setEnabled(true); ? ? ? ? ? ? } ? ? ? ? ? ? else if(e.getSource()==resetJButton){? ? ? ? ? ? ? ? ? countHour=0; ? ? ? ? ? ? ? ? countMin=0; ? ? ? ? ? ? ? ? countSec=0; ? ? ? ? ? ? ? ? countMis=0; ? ? ? ? ? ? } ? ? ? ? ? ? else{//滿位后復位 ? ? ? ? ? ? ? ? countMis++; ? ? ? ? ? ? ? ? if(countMis>=99){ ? ? ? ? ? ? ? ? ? ? countSec++; ? ? ? ? ? ? ? ? ? ? countMis=0; ? ? ? ? ? ? ? ? ? ? if(countSec>=59){ ? ? ? ? ? ? ? ? ? ? ? ? countMin++; ? ? ? ? ? ? ? ? ? ? ? ? countSec=0; ? ? ? ? ? ? ? ? ? ? ? ? if(countMin>=59){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? countHour++; ? ? ? ? ? ? ? ? ? ? ? ? ? ? countMin=0; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? public void paintComponent(Graphics g){ ? ? ? ? super.paintComponent(g);? ? ? ? ? currentTimeLabel.setText(textFormat.format(countHour)+":"+textFormat.format(countMin)+ ? ? ? ? ":"+textFormat.format(countSec)+":"+textFormat.format(countMis)); ? ? ? ? repaint(); ? ? ? } ? ? public static void main(String args[]){ ? ? ? ? ? JFrame frame=new JFrame("秒表演示"); ? ? ? ? ? stopWatch stopwatch=new stopWatch(); ? ? ? ? ? frame.setSize(480,280); ? ? ? ? frame.getContentPane().add(stopwatch); ? ? ? ? ? frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ? ? ? ? ? frame.setVisible(true); ? ? ? } ? } ?
運行結果:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關文章
Java生成隨機數(shù)之Random與ThreadLocalRandom性能比較詳解
大家項目中如果有生成隨機數(shù)的需求,我想大多都會選擇使用Random來實現(xiàn),它內(nèi)部使用了CAS來實現(xiàn)。?實際上,JDK1.7之后,提供了另外一個生成隨機數(shù)的類ThreadLocalRandom,那么他們二者之間的性能是怎么樣的呢?本文就來詳細說說2022-12-12springMvc注解之@ResponseBody和@RequestBody詳解
本篇文章主要介紹了springMvc注解之@ResponseBody和@RequestBody詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05java如何自定義List中的sort()排序,用于日期排序
這篇文章主要介紹了java如何自定義List中的sort()排序,用于日期排序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11redis發(fā)布訂閱Java代碼實現(xiàn)過程解析
這篇文章主要介紹了redis發(fā)布訂閱Java代碼實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09