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);
}
}
运行结果:
来源: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