我有一个 javafx 应用程序,其中有多个选项卡(计时器、秒表、时钟),每个选项卡都有一个单独的控制器,用户可以使用开始/停止按钮添加和独立启动多个计时器。
我尝试将 TextField 绑定到另一个类 MyTimer 的属性,该属性跟踪经过的时间,但它最终(运行几秒钟后)开始抛出错误。(如果您检查下面的代码,请注意,只有将“Thread.sleep”设置为 10 毫秒时才会发生这种情况-当我将延迟增加到 100 毫秒时,它会继续运行大约一分钟并且没有崩溃-我没有进一步测试,因为我想解决根本原因而不是增加延迟)。
只是让您有一个快速的想法: 应用程序图片
MyTimer 类:
public class MyTimer implements Startable {
...
private long startNanoTime, storedElapsedTime, totalTime;
private TimerStates state;
private StringProperty timerStringProperty = new SimpleStringProperty(DEFAULT_TIMER_STRING_VALUE);
public MyTimer() {
//constructor
}
public long getRemainingTime() {
//returns remaining time
}
public StringProperty timerStringPropertyProperty() {
return timerStringProperty;
}
@Override
public boolean start() {
if (this.state.isRunning() ) {
System.out.println("Already running.");
return false;
}
this.startNanoTime = System.nanoTime();
this.state = TimerStates.RUNNING;
Runnable startTimerRunnable = …Run Code Online (Sandbox Code Playgroud)