java实现秒表功能

作者:Jiafu_Liu 时间:2023-07-06 05:55:13 

利用javax.swing.Timer类设计并实现一个模拟秒表功能的应用程序。程序中显示不断递增的时间,同时包含允许用户启动和终止计时功能的代码,以及一个可将时间复位为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)); //网格布局嵌入按钮
        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);  
    }  
}  

运行结果:

java实现秒表功能

来源:https://blog.csdn.net/Jiafu_Liu/article/details/81390561

标签:java,秒表
0
投稿

猜你喜欢

  • java实现mongodb的数据库连接池

    2023-11-23 14:23:09
  • Mybatis自关联查询一对多查询的实现示例

    2021-08-21 04:06:16
  • 浅析Java的Hibernate框架中的缓存和延迟加载机制

    2023-04-12 15:58:00
  • Mapper批量插入Oracle数据@InsertProvider注解

    2023-02-11 15:13:40
  • 详解C#中HashTable的用法

    2023-07-17 04:42:07
  • Android小程序实现选项菜单

    2022-04-12 00:34:01
  • Java线程并发访问代码分析

    2022-08-15 17:42:08
  • Java 分割字符串详解及实例代码

    2023-11-29 13:18:42
  • 详解AndroidStudio JNI +Gradle3.0以上JNI爬坑之旅

    2021-09-01 05:45:04
  • SpringBoot实现Thymeleaf验证码生成

    2021-11-25 08:06:38
  • c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法源代码

    2021-11-22 22:18:24
  • C#飞机打字游戏的代码示例(winform版)

    2021-09-10 17:43:17
  • android开发权限询问的示例代码

    2021-07-29 00:16:26
  • 在 C# 中使用 插值字符串

    2023-06-23 07:09:50
  • C#直线的最小二乘法线性回归运算实例

    2022-05-03 11:19:33
  • android实现App活动定时自动跳转效果

    2022-06-30 06:32:06
  • Java 可视化垃圾回收_动力节点Java学院整理

    2023-02-19 07:03:55
  • Java @Async注解导致spring启动失败解决方案详解

    2022-03-06 00:15:17
  • 浅谈java中对集合对象list的几种循环访问

    2022-02-11 02:32:33
  • Android模拟器"Failed To Allocate memory 8"错误如何解决

    2021-12-09 05:04:48
  • asp之家 软件编程 m.aspxhome.com