gpt4 book ai didi

java - 找出 Swing 计时器已经运行了多长时间

转载 作者:行者123 更新时间:2023-11-30 09:11:36 25 4
gpt4 key购买 nike

我正在制作一个秒表,我知道如何做所有事情,除了查找我的计时器对象运行了多长时间。是否有类似 timer.getElapsedTime() 或类似性质的方法?

编辑:有数字表示 00 00 00。它需要每秒递增。我的思维过程是 seconds = timer.getElapsedTime();
secs.setText(秒)

最佳答案

设置定时器时,只需将 System.currentTimeMillis() 保存在某个变量中,并在需要耗时时将值与当前返回值进行比较。

编辑:让计时器每秒触发一次。请注意,我们会在每次触发时重新设置计时器,以防止延迟和处理时间累积。

package timertest;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;

public class TimerTest implements ActionListener {

JLabel timeDisplay;
long startTime;
Timer timer;
int seconds;

public void createAndShowGUI() {
JFrame frame=new JFrame("Stopwatch");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
timeDisplay=new JLabel("0");
frame.getContentPane().add(timeDisplay);
frame.pack();
frame.setVisible(true);

startTime=System.currentTimeMillis();
seconds=1;
timer=new Timer(1000, this);
timer.setRepeats(false);
timer.start();
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TimerTest().createAndShowGUI();
}
});
}

@Override
public void actionPerformed(ActionEvent e) {
long now=System.currentTimeMillis();
long elapsed=now-startTime;
seconds++;
timeDisplay.setText(elapsed+" Milliseconds since start");
timer.setInitialDelay((int)(startTime+seconds*1000-now));
timer.start();
}
}

关于java - 找出 Swing 计时器已经运行了多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22025534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com