我有一个StopWatch类,我想实现Lap函数
按下运行/停止按钮时,计时器开始在显示屏上计数。如果 再次按下运行/停止按钮,计时器停止。如果再次按下,则 计时器恢复计数,等等。 如果在计时器运行时按下了Lap / Reset按钮,则显示 冻结,并显示单圈时间,计时器继续计数(它只是不是 显示)。如果再次按下Lap / Reset按钮,显示屏将继续显示 计时器实时。如果按下Lap / Reset按钮,则显示 冻结,等等。 如果在计时器运行时按下了Lap / Reset按钮,则显示 冻结,(但计时器继续运行)。如果现在按下运行/停止按钮, 计时器停止计时,但显示屏继续显示单圈时间。如果 按下Lap / Reset按钮,显示屏随后会改变以显示计时器(其中 现在停止了)。如果现在按下运行/停止按钮,计时器将恢复 数数。或者,如果按下Lap / Reset按钮,定时器将重置为 零。
public void startStop() {
timer = new Timer(100, new TimerHandler());
if (!isRunning) {
isRunning = true;
timer.start();
} else {
isRunning = false;
timer.stop();
}
//If now the Run/Stop button is pressed the timer resumes counting
if(!lapPress && !isRunning){
isRunning = true;
}
}
public void lapReset() {
if (!lapPress) {
lapPress = true;
} else if (lapPress) {
lapPress = false;
}
System.out.println(isRunning + " " + lapPress);
// Lap pressed + timer running -> show lap-time + timer continue
if (isRunning && lapPress) {
timer.stop();
}
// Lap press + timer running
if (isRunning && !lapPress) {
timer.start();
}
}
我无法让我的膝部功能正常工作。基本秒表工作正常,任何想法?我更新了要求,只是想检查按钮按下的逻辑,现在如果我点击开始和圈数显示将冻结,但如果我点击开始启动和圈数显示将继续更新。
答案 0 :(得分:0)
running
是否有波动?如果怀疑它不是意味着线程可以缓存值,甚至内联它意味着它不会看到更改,可能永远不会看到它们。
http://vanillajava.blogspot.com/2013/01/java-memory-model-and-optimisation.html