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);
}
}
Java实现秒表
最新推荐文章于 2023-11-26 11:33:26 发布