java实现秒表功能
作者:Jiafu_Liu 发布时间:2023-07-06 05:55:13
标签:java,秒表
利用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);
}
}
运行结果:
来源:https://blog.csdn.net/Jiafu_Liu/article/details/81390561


猜你喜欢
- 常用配置ObjectMapper objectMapper = new ObjectMapper();objectMapper.config
- Java continue break 制作简单聊天室程序,屏蔽不文明语言,显示每句话聊天时间package com.swift;impor
- 本篇开始介绍Jetpack Compose 中的修饰符Modifier。修饰符可以用来执行以下操作:更改可组合项的大小、布局、行为和外观。添
- 本文讲述了Android应用程序模型之应用程序,任务,进程,线程。分享给大家供大家参考,具体如下:大多数操作系统,在应用程序所寄存的可执行程
- Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都会有各自的用途,以及创建和销毁的时间,有的区
- 如何实现首先 * 是属于web这块的,那我们需要引入springboot web模块,具体版本在parent中<dependency&
- spring开启声明式事务导入依赖pom.xml<dependencies>  
- Struts2中提供了数据校验验证数据例如验证邮件、数字等。验证方式有3种:一是通过validate()方法,二是通过Xml,三是使用注解方
- BigDecimal 和 0 比较大小调用BigDecimal中的compareTo方法, 如:int i = bigDecimal.com
- 本篇文章介绍:如何使用Toolbar;自定义Toolbar;先来看一看效果,了解一下toolbar;布局文件:<android.sup
- 1.Java内存模型JAVA定义了一套在多线程读写共享数据时时,对数据的可见性、有序性和原子性的规则和保障。屏蔽掉不同操作系统间的微小差异。
- 为了方便客户抓取Log,现通过TCP协议连接指定服务器,传输指定内容,定义指定目录,IP,PORT字段接收参数。直接上代码 public s
- 在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出、分页分sheet导出和大数据量导出。对于excel2003
- 问题描述:使用Design包的TabLayout实现类似网易选项卡动态滑动效果的时候,使用addTab()方法给TabLayout动态添加标
- 本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:一、环境:主机:WIN8开发环境:Android
- 本文实例讲述了Android基于API的Tabs3实现仿优酷tabhost效果。分享给大家供大家参考,具体如下:前两天老师就让自己写个视频播
- 先给大家这是下效果图:谷歌提供的v4包,ViewPager在布局文件中,先添加<android.support.v4.view.Vie
- 本章是后续学习的基石,只有充分理解了分布式系统的概念和面临的问题,以及ZooKeeper内部的概念,才能懂得ZooKeeper是如何对分布式
- 实现思路收集路径点集。平均采样路径点集。将路径点集转为 LineB。把 LineB 数据传给 Pat
- 写在前面: 从一个窗体的创建显示,再到与用户的交互,最后窗体关闭,这中间经历过了一系列复杂的过程,本文将从Winform应用程序中的Prog