使用实时计数器跟踪已用时间

时间:2017-01-11 14:31:14

标签: java javafx scenebuilder

我创建了一个javafx应用程序,其中包含一个时间跟踪功能,可以跟踪应用程序打开(运行)的时间。我知道System.currentTimeMillis(),但我想知道是否有可能创建一个按钮(不起任何按钮功能 - 我只需要使用看起来不错的JFX按钮),它显示(打印)的数量在应用程序中花费的时间。像实时计数器一样,时间会自动增加。

类似于此的内容:https://www.youtube.com/watch?v=f8LOflGG8g8

但是,不是使用动画,而是使用文字。

2 个答案:

答案 0 :(得分:2)

只需使用AnimationTimer更新文字:

public class MyApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        long startTime = System.currentTimeMillis();
        Label timerLabel = new Label();

        new AnimationTimer() {
            @Override
            public void handle(long now) {
                long elapsedMillis = System.currentTimeMillis() - startTime ;
                timerLabel.setText(Long.toString(elapsedMillis / 1000));
            }
        }.start();

        // lay out UI etc etc

    }
}

答案 1 :(得分:0)

  • 创建一个Thread类
  • 随时启动它,并将当前时间作为参数传递给上述类(System.currentTimeMillis()
  • 在线程内部,有一个循环,最后是Thread.sleep(1000);。每次循环结束时,让它从当前时间减去您在步骤2中传递的时间,如下所示:System.currentTimeMillis() - startTime
  • 使用正确的异步GUI更新方法更新所需的按钮。您可以将计算出的时间除以1000以获得秒数,将另外60分钟计算得到分钟数,将另外60分钟除以得到小时数。