为了账号安全,请及时绑定邮箱和手机立即绑定

JavaFX WebEngine:我需要我的 ChangeListener

JavaFX WebEngine:我需要我的 ChangeListener

胡子哥哥 2021-08-04 17:23:41
在我的 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.javapackage 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);    }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 318 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信