Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Javafx 2 如何在JavaFXWebView中找到完全加载网页的确切时间_Javafx 2 - Fatal编程技术网

Javafx 2 如何在JavaFXWebView中找到完全加载网页的确切时间

Javafx 2 如何在JavaFXWebView中找到完全加载网页的确切时间,javafx-2,Javafx 2,我试图找出web视图加载网页所用的确切时间。 如果我在webEngine.load(url)之前和之后使用计时器,它不会给出加载url所需的确切时间。在大多数情况下,这种方法花费的时间是1百万秒,而页面实际上是在长时间后加载的 请帮忙。 提前感谢。触发一个异步加载任务,可以使用进行监视 下面是一个示例,它监视加载工作程序加载进度并在页面顶部报告进度 import javafx.application.Application; import javafx.beans.binding.Binding

我试图找出web视图加载网页所用的确切时间。 如果我在webEngine.load(url)之前和之后使用计时器,它不会给出加载url所需的确切时间。在大多数情况下,这种方法花费的时间是1百万秒,而页面实际上是在长时间后加载的

请帮忙。 提前感谢。

触发一个异步加载任务,可以使用进行监视

下面是一个示例,它监视加载工作程序加载进度并在页面顶部报告进度

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.property.*;
import javafx.beans.value.*;
import javafx.concurrent.Worker;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.web.*;
import javafx.stage.Stage;

/** Reports load times for pages loaded in a WebView */
public class LoadTimer extends Application {

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

  @Override public void start(final Stage stage) {
    final WebView webview  = new WebView();

    VBox layout = new VBox();
    layout.getChildren().setAll(
        createProgressReport(webview.getEngine()),
        webview
    );

    stage.setScene(new Scene(layout));
    stage.show();

    webview.getEngine().load("http://www.fxexperience.com");
  }

  /** @return a HBox containing a ProgressBar bound to engine load progress and a Label showing load times */
  private HBox createProgressReport(WebEngine engine) {
    final LongProperty startTime   = new SimpleLongProperty();
    final LongProperty endTime     = new SimpleLongProperty();
    final LongProperty elapsedTime = new SimpleLongProperty();

    final ProgressBar loadProgress = new ProgressBar();
    loadProgress.progressProperty().bind(engine.getLoadWorker().progressProperty());

    final Label loadTimeLabel = new Label();
    loadTimeLabel.textProperty().bind(
        Bindings.when(
            elapsedTime.greaterThan(0))
              .then(
                  Bindings.concat("Loaded page in ", elapsedTime.divide(1_000_000), "ms")
              )
              .otherwise(
                  "Loading..."
              )
    );

    elapsedTime.bind(Bindings.subtract(endTime, startTime));

    engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
      @Override
      public void changed(ObservableValue<? extends Worker.State> observableValue, Worker.State oldState, Worker.State state) {
        switch (state) {
          case RUNNING:
            startTime.set(System.nanoTime());
            break;

          case SUCCEEDED:
            endTime.set(System.nanoTime());
            break;
        }
      }
    });

    HBox progressReport = new HBox(10);
    progressReport.getChildren().setAll(
        loadProgress,
        loadTimeLabel
    );
    progressReport.setPadding(new Insets(5));
    progressReport.setAlignment(Pos.CENTER_LEFT);

    return progressReport;
  }
}

导入javafx.application.application;
导入javafx.beans.binding.Bindings;
导入javafx.beans.property.*;
导入javafx.beans.value.*;
导入javafx.concurrent.Worker;
导入javafx.geometry.Insets;
导入javafx.scene.scene;
导入javafx.scene.control.*;
导入javafx.scene.layout.*;
导入javafx.scene.web.*;
导入javafx.stage.stage;
/**报告在WebView中加载的页面的加载时间*/
公共类LoadTimer扩展了应用程序{
公共静态void main(字符串[]args){launch(args);}
@覆盖公共无效开始(最后阶段){
最终WebView WebView=新WebView();
VBox布局=新的VBox();
layout.getChildren().setAll(
createProgressReport(webview.getEngine()),
网络视图
);
舞台场景(新场景(布局));
stage.show();
webview.getEngine().load(“http://www.fxexperience.com");
}
/**@返回一个HBox,其中包含绑定到引擎加载进度的进度条和显示加载时间的标签*/
专用HBox createProgressReport(WebEngine){
final LongProperty startTime=新的SimpleLongProperty();
final LongProperty endTime=新的SimpleLongProperty();
final LongProperty elapsedTime=新的SimpleLongProperty();
最终进度条加载进度=新进度条();
loadProgress.progressProperty().bind(engine.getLoadWorker().progressProperty());
最终标签loadTimeLabel=新标签();
loadTimeLabel.textProperty().bind(
绑定。什么时候(
elapsedTime.大于(0))
.那么(
Bindings.concat(“加载页面”,elapsedTime.divide(1_000_000),“ms”)
)
.否则(
“正在加载…”
)
);
elapsedTime.bind(Bindings.subtract(endTime,startTime));
engine.getLoadWorker().stateProperty().addListener(新的ChangeListener()){
@凌驾
公共无效已更改(可观察值)