タイムラインを使用して1分の時間を記録するシステムを作成しようとしています。このような状況では、タイムラインを1秒ごとに増やして、アクションバーを起動してタイムラインをリセットする前に、Progressbarに1分前にこれを記録させたいと思います。JavaFXタイムラインを秒単位で取得してプログレスバーにバインドするにはどうすればよいですか?
final Timeline timeline = new Timeline();
timeline.setCycleCount(Animation.INDEFINITE);
timeline.getKeyFrames().add(new KeyFrame(Duration.seconds(1)));
progress.progressProperty().bind(timeline.getTotalDuration()???);
timeline.play();
私はタイムラインサイクルが決して止まらないようにサイクルカウントを不定に設定しました。また、Progressbarプロパティをタイムラインにバインドしようとしましたが、Observablevalueが必要です(timeline#getTotalDuration
は提供していません)。
私は別々のスレッドに結合することなくプログラムを実行しようとしました:
new Thread(new Task<Void>() {
@Override
protected Void call() throws Exception {
while(true){
System.out.printf("s:\t%f\n",timeline.getTotalDuration().toSeconds());
Thread.sleep(1000);
}
}
}).start();
しかし、これは毎秒タイマーを増やし、代わりに一度だけで、すべてのサイクルを通過しない実行されています。私が設定したcycleCountはINDEFINITE
だったので、#totalDuration
の結果はinfinite
です。
秒単位でタイムラインを取得するにはどうすればよいでしょうか?また、100%に達するまでプログレスバーにデュレーションをバインドして特別なアクションを呼び出せるようにするにはどうすればいいですか?あなたはちょうどそれが毎分の終わりに達したときにプログレスバーが分にわたって完全なゼロから繰り返し増加し、コードを実行したい場合は