Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用实时计数器跟踪运行时间_Java_Javafx_Scenebuilder - Fatal编程技术网

Java 使用实时计数器跟踪运行时间

Java 使用实时计数器跟踪运行时间,java,javafx,scenebuilder,Java,Javafx,Scenebuilder,我创建了一个javafx应用程序,其中包括一个时间跟踪功能,用于跟踪应用程序打开(运行)的时间。我知道System.currentTimeMillis(),但我想知道是否有可能创建一个显示(打印)在应用程序中花费的时间的按钮(该按钮没有按钮的功能-我只需要使用一个看起来不错的JFX按钮)。类似于实时计数器的东西,时间会自动增加 类似于此: 但是,除了使用动画,使用文本以外。 创建一个线程类 随时启动它,并将当前时间作为参数传递给上述类(System.currentTimeMillis()) 在线

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

类似于此:

但是,除了使用动画,使用文本以外。

  • 创建一个线程类
  • 随时启动它,并将当前时间作为参数传递给上述类(
    System.currentTimeMillis()
  • 在线程内部,有一个循环和一个
    thread.sleep(1000)在末尾。每次循环进行时,让它从当前时间中减去步骤2中经过的时间,如下所示:
    System.currentTimeMillis()-startTime
  • 使用适当的异步GUI更新方法来更新所需的按钮。您可以将计算的时间除以1000得到秒,再除以60得到分钟,再除以60得到小时
      • 创建一个线程类
      • 随时启动它,并将当前时间作为参数传递给上述类(
        System.currentTimeMillis()
      • 在线程内部,有一个循环和一个
        thread.sleep(1000)在末尾。每次循环进行时,让它从当前时间中减去步骤2中经过的时间,如下所示:
        System.currentTimeMillis()-startTime
      • 使用适当的异步GUI更新方法来更新所需的按钮。您可以将计算的时间除以1000得到秒,再除以60得到分钟,再除以60得到小时

      只需使用
      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
      
          }
      }
      

      只需使用
      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
      
          }
      }