如何用java实现计时器,需求要有暂停开始清零
时间: 2024-02-03 10:11:35 浏览: 26
你可以使用 Java 的计时器类 Timer 来实现计时器。下面是一个简单的示例代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TimerDemo {
private Timer timer;
private JLabel timeLabel;
private long startTime;
private long pausedTime;
public TimerDemo() {
JFrame frame = new JFrame("计时器");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
timeLabel = new JLabel("00:00:00", SwingConstants.CENTER);
timeLabel.setFont(new Font("Arial", Font.PLAIN, 48));
frame.add(timeLabel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new GridLayout(1, 3));
JButton startButton = new JButton("开始");
JButton pauseButton = new JButton("暂停");
JButton resetButton = new JButton("清零");
buttonPanel.add(startButton);
buttonPanel.add(pauseButton);
buttonPanel.add(resetButton);
frame.add(buttonPanel, BorderLayout.SOUTH);
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
long elapsed = System.currentTimeMillis() - startTime - pausedTime;
String timeStr = formatTime(elapsed);
timeLabel.setText(timeStr);
}
};
timer = new Timer(1000, listener);
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!timer.isRunning()) {
startTime = System.currentTimeMillis();
timer.start();
}
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (timer.isRunning()) {
timer.stop();
pausedTime += System.currentTimeMillis() - startTime;
}
}
});
resetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (timer.isRunning()) {
timer.stop();
}
pausedTime = 0;
timeLabel.setText("00:00:00");
}
});
frame.setVisible(true);
}
private String formatTime(long time) {
long seconds = time / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
return String.format("%02d:%02d:%02d", hours, minutes % 60, seconds % 60);
}
public static void main(String[] args) {
new TimerDemo();
}
}
```
在这个示例中,我们使用了 Timer 类来实现计时器。计时器的开始、暂停和清零操作都通过按钮实现。在计时器运行时,我们使用 System.currentTimeMillis() 函数来获取当前时间,然后计算出经过的时间。最后通过 formatTime 函数将时间格式化为字符串并显示在 Label 中。
需要注意的是,在暂停操作中,我们需要记录下暂停的时间,以便在计时器继续运行时能够计算出正确的时间。