如何监控文本java fx打印的持续时间?

如何监控文本java fx打印的持续时间?,java,javafx,javafx-8,Java,Javafx,Javafx 8,我是否可以在javafx中监控持续时间 让我们这样说吧 System.out.println("Printing Duration: " + duration++); 以下是我通常对任务计时的方式。本例跟踪ProgressBar完成所需的秒数。关键是当任务开始时启动时间线,当任务结束时结束时间线 import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import javafx.animation.K

我是否可以在javafx中监控持续时间

让我们这样说吧

System.out.println("Printing Duration: " + duration++);

以下是我通常对任务计时的方式。本例跟踪
ProgressBar
完成所需的秒数。关键是当
任务开始时启动
时间线
,当
任务结束时结束
时间线

import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.concurrent.Task;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Example extends Application
{

    @Override
    public void start(Stage stage)
    {
        AtomicInteger atomicInteger = new AtomicInteger();
        Label label = new Label("0 seconds");
        Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), (event) -> {
            System.out.println(atomicInteger.incrementAndGet() + " seconds.");
            label.setText(atomicInteger.get() + " seconds");
        }));
        timeline.setCycleCount(Timeline.INDEFINITE);

        Task<Void> task = new Task<Void>()
        {
            @Override
            protected Void call() throws Exception
            {
                Random random = new Random();
                int randomNumber = random.nextInt(100) + 100;
                for (int i = 0; i < randomNumber; i++) {
                    updateProgress(i, randomNumber);
                    try {
                        Thread.sleep(100);
                    }
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

                return null;
            }
        };
        task.setOnSucceeded((event) -> {
            timeline.stop();
        });
        ProgressBar progressBar = new ProgressBar(0);
        progressBar.progressProperty().bind(task.progressProperty());

        Button button = new Button("Start");
        button.setOnAction((event) -> {
            button.setDisable(true);
            timeline.play();
            Thread thread = new Thread(task);
            thread.setDaemon(true);
            thread.start();
        });

        VBox root = new VBox(label, progressBar, button);
        Scene scene = new Scene(root, 500, 500);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args)
    {
        launch(args);
    }

}
import java.util.Random;
导入java.util.concurrent.AtomicInteger;
导入javafx.animation.KeyFrame;
导入javafx.animation.Timeline;
导入javafx.application.application;
导入javafx.concurrent.Task;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.control.Label;
导入javafx.scene.control.ProgressBar;
导入javafx.scene.layout.VBox;
导入javafx.stage.stage;
导入javafx.util.Duration;
公共类示例扩展了应用程序
{
@凌驾
公众假期开始(阶段)
{
AtomicInteger AtomicInteger=新的AtomicInteger();
标签=新标签(“0秒”);
时间线=新时间线(新关键帧)(持续时间。秒(1),(事件)->{
System.out.println(atomicInteger.incrementAndGet()+“秒”);
label.setText(atomicInteger.get()+“秒”);
}));
timeline.setCycleCount(timeline.unfinite);
任务=新任务()
{
@凌驾
受保护的Void调用()引发异常
{
随机=新随机();
int randomNumber=random.nextInt(100)+100;
对于(int i=0;i{
timeline.stop();
});
ProgressBar ProgressBar=新的ProgressBar(0);
progressBar.progressProperty().bind(task.progressProperty());
按钮按钮=新按钮(“开始”);
按钮设置动作((事件)->{
按钮。设置禁用(true);
timeline.play();
线程线程=新线程(任务);
setDaemon(true);
thread.start();
});
VBox根=新的VBox(标签、进度条、按钮);
场景=新场景(根,500500);
舞台场景;
stage.show();
}
公共静态void main(字符串[]args)
{
发射(args);
}
}

对不起,这真的不清楚。期间什么的?通常,在做某事之前获取一个时间戳,然后获取一个时间戳,然后计算增量并打印它。这就是你所说的吗?使用
时间线
。让它每秒钟更新一次。如果打印时间过长,我想监控打印机。