JavaFX WebEngine:我需要我的 ChangeListener

在我的 JavaFX 项目中,我在等待网站完全呈现的 WebView 的 WebEngine 上有一个侦听器。然后我需要访问生成的 DOM 文档。如果我不知道侦听器属于哪个 WebEngine,这将不起作用!


创建变量或简单地使用webView存在的变量不是一种选择!这是因为我正在使用 ChangeListeners 创建几个 webViews。我现在如何将它们分配给彼此?


webView.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {

     public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {

        if (newState == Worker.State.SUCCEEDED) {

            // Here I do my stuff

            // I need to access webView.getEngine().getDocument()

        }

     }

});

更新


这是我面临的问题的最小工作示例:https : //github.com/mg98/StackOverflow-Demonstration


它基本上是关于: Main.java


package sample;


import javafx.application.Application;

import javafx.beans.value.ChangeListener;

import javafx.beans.value.ObservableValue;

import javafx.concurrent.Worker;

import javafx.fxml.FXMLLoader;

import javafx.scene.Parent;

import javafx.scene.Scene;

import javafx.scene.web.WebView;

import javafx.stage.Stage;

import org.w3c.dom.Document;


public class Main extends Application {


    private static Controller ctrl;

    private final static String[] urls = new String[] {

            "https://google.com",

            "https://youtube.com",

            "https://facebook.com",

            "https://twitter.com",

            "https://stackoverflow.com"

    };


    @Override

    public void start(Stage primaryStage) throws Exception{

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("sample.fxml"));

        Parent root = fxmlLoader.load();

        ctrl = fxmlLoader.getController();

        primaryStage.setTitle("Hello World");

        primaryStage.setScene(new Scene(root, 300, 275));

        primaryStage.show();


        findSomething();

    }



    public static void main(String[] args) {

        launch(args);

    }


胡子哥哥
浏览 319回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java