java实现功能界面记录暂停了多久
时间: 2023-07-20 10:45:03 浏览: 51
实现这个功能可以使用Java的计时器类Timer和Date类。首先,在程序开始运行时记录当前时间,然后启动一个计时器。当用户暂停时,停止计时器并记录暂停时的时间。当用户恢复操作时,重新启动计时器,并记录恢复时的时间。最后,计算暂停的时间差,并将其显示在界面上。
以下是实现该功能的Java代码示例:
```java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class PauseTimer extends JFrame {
private JLabel timeLabel;
private JButton pauseButton, resumeButton;
private Date startTime, pauseTime, resumeTime;
private long pauseDuration;
private Timer timer;
public PauseTimer() {
setTitle("Pause Timer");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
timeLabel = new JLabel("00:00:00");
pauseButton = new JButton("Pause");
pauseButton.addActionListener(new PauseButtonListener());
resumeButton = new JButton("Resume");
resumeButton.addActionListener(new ResumeButtonListener());
resumeButton.setEnabled(false);
JPanel panel = new JPanel();
panel.add(timeLabel);
panel.add(pauseButton);
panel.add(resumeButton);
add(panel);
startTime = new Date();
timer = new Timer(1000, new TimerListener());
timer.start();
}
private void pauseTimer() {
pauseTime = new Date();
timer.stop();
pauseButton.setEnabled(false);
resumeButton.setEnabled(true);
}
private void resumeTimer() {
resumeTime = new Date();
pauseDuration += resumeTime.getTime() - pauseTime.getTime();
timer.start();
pauseButton.setEnabled(true);
resumeButton.setEnabled(false);
}
private void updateTimeLabel() {
long elapsed = new Date().getTime() - startTime.getTime() - pauseDuration;
int hours = (int) (elapsed / (60 * 60 * 1000));
int minutes = (int) ((elapsed / (60 * 1000)) % 60);
int seconds = (int) ((elapsed / 1000) % 60);
timeLabel.setText(String.format("%02d:%02d:%02d", hours, minutes, seconds));
}
private class PauseButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
pauseTimer();
}
}
private class ResumeButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
resumeTimer();
}
}
private class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
updateTimeLabel();
}
}
public static void main(String[] args) {
PauseTimer timer = new PauseTimer();
timer.setVisible(true);
}
}
```
在上面的代码中,我们创建了一个PauseTimer类,它继承自JFrame类,用于实现应用程序窗口。在构造函数中,我们初始化了界面组件,记录了程序开始运行时的时间,并启动了一个计时器。计时器每秒钟触发一次ActionEvent事件,然后调用updateTimeLabel()方法来更新时间标签的显示。
当用户点击暂停按钮时,我们记录了当前时间,停止计时器,并禁用了暂停按钮,启用了恢复按钮。当用户点击恢复按钮时,我们记录了恢复时的时间,计算暂停的时间差,重新启动计时器,并更新按钮的状态。
最后,我们实现了一个updateTimeLabel()方法来计算已经过去的时间,并将其显示在时间标签中。该方法使用Date类来计算时间差,并将其转换为小时、分钟和秒数来显示在标签中。