Java实现秒表

在这里插入图片描述

package experiment4;
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 Mystopwatch extends JPanel
{
    private JLabel currentTimeLabel; //显示时间标签 
    private JLabel getMinuteLabel; //获得分针示数标签 
    private JLabel getSecondLabel; //获得秒针示数标签
    private JButton startJButton;    //开始计时按钮
    private JButton stopJButton;     //停止计时按钮
    private JButton resetJButton;    //复位按钮
    private JButton HourToZeroJButton;    //时针归零按钮
    private JButton MinuteToZeroJButton;    //分针归零按钮
    private JButton SecondToZeroJButton;    //秒针归零按钮
    private JButton getMinuteJButton;    //获得分针示数
    private JButton getSecondJButton;    //获得秒针示数
    private JButton getTotalMilliseconds; //获得总时间的毫秒数
    private long countMis,countSec,countMin,countHour;//计时变量
    private long m_countMis;
    private DecimalFormat textFormat=new DecimalFormat("00");//格式化输出
    Timer timer=new Timer(10,new TestActionListener());//计时单位10ms

    public Mystopwatch() 
    {  
        JPanel panel=new JPanel(new GridLayout(3,3,5,10)); //网格布局嵌入按钮
        JPanel panel1=new JPanel(new GridLayout(1,2,5,10)); //网格布局嵌入按钮
        JPanel panel2=new JPanel(); 
        currentTimeLabel=new JLabel(" "); 
        getMinuteLabel=new JLabel(" ");
        getSecondLabel=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"); 
        HourToZeroJButton=new JButton("HourToZero");
        MinuteToZeroJButton=new JButton("MinuteToZero"); 
        SecondToZeroJButton=new JButton("SecondToZero"); 
        getMinuteJButton=new JButton("getMinutes"); 
        getSecondJButton=new JButton("getSeconds"); 
        getTotalMilliseconds=new JButton("TotalMilliseconds"); 
        
        //设置JButton相关属性
        startJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        stopJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        resetJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        MinuteToZeroJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        SecondToZeroJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        getMinuteJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        getSecondJButton.setBorder(BorderFactory.createRaisedBevelBorder());
        getTotalMilliseconds.setBorder(BorderFactory.createRaisedBevelBorder());
        HourToZeroJButton.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));
        MinuteToZeroJButton.setFont(new java.awt.Font("Times New Roman", 1, 30));
        SecondToZeroJButton.setFont(new java.awt.Font("Times New Roman", 1, 30));
        getMinuteJButton.setFont(new java.awt.Font("Times New Roman", 1, 30));
        getSecondJButton.setFont(new java.awt.Font("Times New Roman", 1, 30));
        getTotalMilliseconds.setFont(new java.awt.Font("Times New Roman", 1, 30));
        HourToZeroJButton.setFont(new java.awt.Font("Times New Roman", 1, 30));
        getMinuteLabel.setFont(new java.awt.Font("Times New Roman", 1, 30));
        getSecondLabel.setFont(new java.awt.Font("Times New Roman", 1, 30));
        
        stopJButton.setBackground(Color.cyan); 
        startJButton.setBackground(Color.red);
        resetJButton.setBackground(Color.orange);
        HourToZeroJButton.setBackground(Color.yellow);
        MinuteToZeroJButton.setBackground(Color.green);
        SecondToZeroJButton.setBackground(Color.orange);
        getMinuteJButton.setBackground(Color.blue);
        getSecondJButton.setBackground(Color.pink);
        getTotalMilliseconds.setBackground(Color.orange);
        
        stopJButton.addActionListener(actionListener);  
        startJButton.addActionListener(actionListener);  
        resetJButton.addActionListener(actionListener);  
        HourToZeroJButton.addActionListener(actionListener);
        MinuteToZeroJButton.addActionListener(actionListener);
        SecondToZeroJButton.addActionListener(actionListener);
        getMinuteJButton.addActionListener(actionListener);
        getSecondJButton.addActionListener(actionListener);
        getTotalMilliseconds.addActionListener(actionListener);
        
        
        this.setLayout(new BorderLayout());  

        panel2.setBackground(Color.gray);
        panel2.setBorder(BorderFactory.createLoweredBevelBorder());  
        panel2.add(currentTimeLabel); 
        
        panel2.setBackground(Color.white);
        panel2.setBorder(BorderFactory.createLoweredBevelBorder()); 
        panel1.add(getMinuteLabel);
        panel1.add(getSecondLabel);
        
        panel.add(startJButton);
        panel.add(stopJButton);  
        panel.add(resetJButton); 
        panel.add(HourToZeroJButton);
        panel.add(MinuteToZeroJButton);
        panel.add(SecondToZeroJButton);
        panel.add(getMinuteJButton);
        panel.add(getSecondJButton);
        panel.add(getTotalMilliseconds);
        
        this.add(panel2,BorderLayout.NORTH); 
        this.add(panel1,BorderLayout.CENTER);
        this.add(panel,BorderLayout.SOUTH);
    } 
    //处理相关事件
    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 if(e.getSource()==HourToZeroJButton){ 
                countHour=0;
            }
            else if(e.getSource()==MinuteToZeroJButton){ 
                countMin=0;
            }
            else if(e.getSource()==SecondToZeroJButton){ 
            	countSec=0;
            }
            else if(e.getSource()==getMinuteJButton) {
            	getSecondLabel.setText(textFormat.format(countMin));
            }
            else if(e.getSource()==getSecondJButton) {
            	getSecondLabel.setText(textFormat.format(countSec));
            }
            else if(e.getSource()==getTotalMilliseconds) {
            	m_countMis = countMis + countSec*1000+countMin*6000+countHour*360000;
            	getSecondLabel.setText(textFormat.format(m_countMis));
            }
            else
            {//满位后复位
            	countMis++;
            	if(countMis>=100) 
            	{
            		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("秒表演示");  
        Mystopwatch stopwatch=new Mystopwatch();  
        frame.setSize(600,400);
        frame.getContentPane().add(stopwatch);  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        frame.setVisible(true);  
    }


}


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值