Java WebView加载url不工作

Java WebView加载url不工作,java,swing,javafx,Java,Swing,Javafx,我有一个Swing应用程序,其中嵌入了JavaFXWebView。我可以使用WebView的WebEngine加载初始网页。但是,由于某些原因,对WebEngine.load的后续调用无法工作。以下是我添加到WebEngine的调试代码: private static WebView initFX(JFXPanel fxPanel) { StackPane root = new StackPane(); Scene scene = new Scene(root, Color.AL

我有一个Swing应用程序,其中嵌入了JavaFXWebView。我可以使用WebView的WebEngine加载初始网页。但是,由于某些原因,对WebEngine.load的后续调用无法工作。以下是我添加到WebEngine的调试代码:

private static WebView initFX(JFXPanel fxPanel) {
    StackPane root = new StackPane();
    Scene scene = new Scene(root, Color.ALICEBLUE);

    final WebView webView = new WebView();
    final WebEngine webEngine = webView.getEngine();
    root.getChildren().add(webView);

    webEngine.load("http://www.google.com");

    webEngine.setOnAlert(new EventHandler<WebEvent<String>>() {
        @Override
        public void handle(WebEvent<String> arg0) {
            System.out.println("alert: " + arg0);
        }
    });

    webEngine.getLoadWorker().progressProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) {
            System.out.println("Process changed: " + arg0 + ", arg1: " + arg1 + ", arg2: " + arg2);
        }
    });

    webEngine.getLoadWorker().messageProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
            System.out.println("message changed: " + arg0 + ", arg1: " + arg1 + ", arg2: " + arg2);
        }
    });

    webEngine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() {
        @Override
        public void changed(ObservableValue<? extends Throwable> arg0, Throwable arg1, Throwable arg2) {
            throw Throwables.throwUncheckedException(arg2);
        }
    });

    webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        @Override
        public void changed(ObservableValue<? extends Worker.State> arg0, Worker.State arg1, Worker.State arg2) {
            System.out.println("old state: " + arg1 + ", new state: " + arg2 + ", arg0: " + arg0);
        }
    });

    fxPanel.setScene(scene);
    return webView;
}
从输出来看,WebView似乎加载了nytimes.com。但是,WebView从不显示更新

有没有人对可能出现的错误有什么想法,或者对我如何获得有关WebView中发生的事情的更多信息有什么建议

我在Java7和Java8中看到了相同的行为

编辑:如果有人要求提供其他信息或调试输出,我很乐意提供


编辑:这是由与JavaFX/Swing集成无关的其他代码中的错误引起的。谢谢大家的建议

下面是一个关于如何操作的完整示例。将来请发布一篇文章,特别是因为您参与了Swing,并且只发布了JavaFX代码的一些部分

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class SwingBrowser extends JPanel {

    WebEngine webEngine;

    private static void initAndShowGUI() {

        JFrame frame = new JFrame();

        frame.add(new SwingBrowser());
        frame.setSize(1024, 768);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public SwingBrowser() {

        JPanel toolbar = new JPanel();
        toolbar.setLayout(new FlowLayout());

        JButton button;

        button = new JButton("Google");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                loadPage("http://www.google.com");
            }
        });

        toolbar.add(button);

        button = new JButton("NY Times");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                loadPage("http://www.nytimes.com");
            }
        });

        toolbar.add(button);

        final JFXPanel fxPanel = new JFXPanel();

        setLayout(new BorderLayout());
        add(fxPanel, BorderLayout.CENTER);
        add(toolbar, BorderLayout.NORTH);

        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                initFX(fxPanel);
            }
        });
    }

    private void loadPage(String url) {

        Platform.runLater(new Runnable() {
            @Override
            public void run() {

                webEngine.load(url);

            }
        });

    }

    private void initFX(JFXPanel fxPanel) {
        Scene scene = createScene();
        fxPanel.setScene(scene);
    }

    private Scene createScene() {

        WebView webView = new WebView();

        webEngine = webView.getEngine();

        webEngine.getLoadWorker().progressProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) {
                System.out.println("Process changed: " + arg0 + ", arg1: " + arg1 + ", arg2: " + arg2);
            }
        });

        webEngine.getLoadWorker().messageProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
                System.out.println("message changed: " + arg0 + ", arg1: " + arg1 + ", arg2: " + arg2);
            }
        });

        webEngine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() {
            @Override
            public void changed(ObservableValue<? extends Throwable> arg0, Throwable arg1, Throwable arg2) {
                System.out.println(arg0);
                System.out.println(arg1);
                System.out.println(arg2);
            }
        });

        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
            @Override
            public void changed(ObservableValue<? extends Worker.State> arg0, Worker.State arg1, Worker.State arg2) {
                System.out.println("old state: " + arg1 + ", new state: " + arg2 + ", arg0: " + arg0);
            }
        });

        webEngine.load("http://www.google.com");

        BorderPane bp = new BorderPane();

        bp.setCenter(webView);

        Scene scene = new Scene(bp);

        return (scene);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                initAndShowGUI();
            }
        });
    }
}
导入java.awt.BorderLayout;
导入java.awt.FlowLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javafx.application.Platform;
导入javafx.beans.value.ChangeListener;
导入javafx.beans.value.observeValue;
导入javafx.concurrent.Worker;
导入javafx.embed.swing.JFXPanel;
导入javafx.scene.scene;
导入javafx.scene.layout.BorderPane;
导入javafx.scene.web.WebEngine;
导入javafx.scene.web.WebView;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.SwingUtilities;
公共类SwingBrowser扩展了JPanel{
网络引擎;
私有静态void initAndShowGUI(){
JFrame=新JFrame();
frame.add(新SwingBrowser());
帧设置大小(1024768);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
公共SwingBrowser(){
JPanel toolbar=新的JPanel();
toolbar.setLayout(新的FlowLayout());
按钮;
按钮=新的JButton(“谷歌”);
addActionListener(新建ActionListener()){
@凌驾
已执行的公共无效操作(操作事件e){
加载页(“http://www.google.com");
}
});
工具栏。添加(按钮);
按钮=新按钮(“纽约时报”);
addActionListener(新建ActionListener()){
@凌驾
已执行的公共无效操作(操作事件e){
加载页(“http://www.nytimes.com");
}
});
工具栏。添加(按钮);
最终JFXPanel fxPanel=新JFXPanel();
setLayout(新的BorderLayout());
添加(fxPanel,BorderLayout.CENTER);
添加(工具栏,BorderLayout.NORTH);
Platform.runLater(新的Runnable(){
@凌驾
公开募捐{
initFX(fxPanel);
}
});
}
私有void加载页(字符串url){
Platform.runLater(新的Runnable(){
@凌驾
公开募捐{
加载(url);
}
});
}
私有void initFX(JFXPanel fxPanel){
Scene-Scene=createScene();
fxPanel.setScene(场景);
}
私有场景createScene(){
WebView WebView=新建WebView();
webEngine=webView.getEngine();
webEngine.getLoadWorker().progressProperty().addListener(新的ChangeListener()){
@凌驾

更改公众假期(ObservableValueI无法重现此行为。我们可以看看
webEngine.load
如何在
平台中调用。runLater
?您使用的是什么操作系统?JDK的哪个次要版本?仍然存在问题吗?它没有加载吗?您尝试加载第一个站点两次了吗?您得到了相同的输出吗?您是否也尝试过h其他站点?当Webview出现时,它的视觉外观是什么?纯白色?在哪个线程中调用
load
?下面是什么说明
webEngine.load(“http://www.nytimes.com")
?你能使用@heeneee吗?我想我的更新给你提供了你在
webEngine.load中所需要的东西。加载
@Elltz谷歌加载的视觉外观是谷歌加载的,但它留在谷歌上,而不是改为nytimes.com@发现在调用加载《纽约时报》之后,不应该有任何东西与WebView交互。我的问题不是使用JavaFx/Swing集成,但感谢您的帮助!感谢您的努力。
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@7f311653, name: progress, value: 0.30000000000000004], arg1: 0.0, arg2: 0.30000000000000004
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@7f311653, name: progress, value: 0.3750537109375], arg1: 0.30000000000000004, arg2: 0.3750537109375
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: message, value: Loading http://ssl.gstatic.com/gb/images/b_8d5afc09.png], arg1: , arg2: Loading http://ssl.gstatic.com/gb/images/b_8d5afc09.png
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.0], arg1: -1.0, arg2: 0.0
old state: READY, new state: SCHEDULED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: state, value: SCHEDULED]
old state: SCHEDULED, new state: RUNNING, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: state, value: RUNNING]
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.1361267397098016], arg1: 0.0, arg2: 0.1361267397098016
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@7f311653, name: message, value: Loading complete], arg1: Loading http://www.google.com/, arg2: Loading complete
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@7f311653, name: progress, value: 1.0], arg1: 0.3750537109375, arg2: 1.0
old state: RUNNING, new state: SUCCEEDED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@7f311653, name: state, value: SUCCEEDED]
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.2439676525013781], arg1: 0.1361267397098016, arg2: 0.2439676525013781
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.3674793663516144], arg1: 0.2439676525013781, arg2: 0.3674793663516144
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.49099108020185067], arg1: 0.3674793663516144, arg2: 0.49099108020185067
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.5579187727289953], arg1: 0.49099108020185067, arg2: 0.5579187727289953
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.6248464652561398], arg1: 0.5579187727289953, arg2: 0.6248464652561398
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.6917741577832844], arg1: 0.6248464652561398, arg2: 0.6917741577832844
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.7067348499897916], arg1: 0.6917741577832844, arg2: 0.7067348499897916
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.8196757488843449], arg1: 0.7067348499897916, arg2: 0.8196757488843449
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 0.8548236404421787], arg1: 0.8196757488843449, arg2: 0.8548236404421787
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: message, value: Loading complete], arg1: Loading http://ssl.gstatic.com/gb/images/b_8d5afc09.png, arg2: Loading complete
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: progress, value: 1.0], arg1: 0.8548236404421787, arg2: 1.0
old state: RUNNING, new state: SUCCEEDED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@2514c48a, name: state, value: SUCCEEDED]


message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: message, value: Loading stopped], arg1: Loading http://www.google.com/, arg2: Loading stopped
old state: RUNNING, new state: CANCELLED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: state, value: CANCELLED]
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: message, value: ], arg1: Loading stopped, arg2: 
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: -1.0], arg1: 0.0, arg2: -1.0
old state: CANCELLED, new state: READY, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: state, value: READY]
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: message, value: Loading http://www.nytimes.com/], arg1: , arg2: Loading http://www.nytimes.com/
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.0], arg1: -1.0, arg2: 0.0
old state: READY, new state: SCHEDULED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: state, value: SCHEDULED]
old state: SCHEDULED, new state: RUNNING, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: state, value: RUNNING]
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.30000000000000004], arg1: 0.0, arg2: 0.30000000000000004
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.37692307692307697], arg1: 0.30000000000000004, arg2: 0.37692307692307697
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.4153846153846154], arg1: 0.37692307692307697, arg2: 0.4153846153846154
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.4371344828559657], arg1: 0.4153846153846154, arg2: 0.4371344828559657
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.46145061663389897], arg1: 0.4371344828559657, arg2: 0.46145061663389897
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.4889858904668283], arg1: 0.46145061663389897, arg2: 0.4889858904668283
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.4996095231732179], arg1: 0.4889858904668283, arg2: 0.4996095231732179
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.49962536129670365], arg1: 0.4996095231732179, arg2: 0.49962536129670365
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.5333407915930204], arg1: 0.49962536129670365, arg2: 0.5333407915930204
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.5626822750946262], arg1: 0.5333407915930204, arg2: 0.5626822750946262
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.5941663733048309], arg1: 0.5626822750946262, arg2: 0.5941663733048309
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.6221525081979236], arg1: 0.5941663733048309, arg2: 0.6221525081979236
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.6427489898360779], arg1: 0.6221525081979236, arg2: 0.6427489898360779
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.6511656916228664], arg1: 0.6427489898360779, arg2: 0.6511656916228664
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.6781609002406684], arg1: 0.6511656916228664, arg2: 0.6781609002406684
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7014367363219931], arg1: 0.6781609002406684, arg2: 0.7014367363219931
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7259500858917705], arg1: 0.7014367363219931, arg2: 0.7259500858917705
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7502698308413603], arg1: 0.7259500858917705, arg2: 0.7502698308413603
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7746271668215516], arg1: 0.7502698308413603, arg2: 0.7746271668215516
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7753621953130199], arg1: 0.7746271668215516, arg2: 0.7753621953130199
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7971212698771013], arg1: 0.7753621953130199, arg2: 0.7971212698771013
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.7978113746702923], arg1: 0.7971212698771013, arg2: 0.7978113746702923
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8246883429436381], arg1: 0.8045146825367253, arg2: 0.8246883429436381
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8506063568503134], arg1: 0.8246883429436381, arg2: 0.8506063568503134
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8658103758125865], arg1: 0.8506063568503134, arg2: 0.8658103758125865
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8897690876754529], arg1: 0.8658103758125865, arg2: 0.8897690876754529
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8986044176113637], arg1: 0.8897690876754529, arg2: 0.8986044176113637
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8994287053144517], arg1: 0.8986044176113637, arg2: 0.8994287053144517
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8994895637143085], arg1: 0.8994287053144517, arg2: 0.8994895637143085
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8996659228140144], arg1: 0.8994895637143085, arg2: 0.8996659228140144
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.899756240085032], arg1: 0.8996659228140144, arg2: 0.899756240085032
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8999302539945363], arg1: 0.899756240085032, arg2: 0.8999302539945363
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8999779051067591], arg1: 0.8999302539945363, arg2: 0.8999779051067591
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: message, value: Loading complete], arg1: Loading http://www.nytimes.com/, arg2: Loading complete
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 1.0], arg1: 0.8999779051067591, arg2: 1.0
old state: RUNNING, new state: SUCCEEDED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: state, value: SUCCEEDED].scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8045146825367253], arg1: 0.7978113746702923, arg2: 0.8045146825367253
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8246883429436381], arg1: 0.8045146825367253, arg2: 0.8246883429436381
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8506063568503134], arg1: 0.8246883429436381, arg2: 0.8506063568503134
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8658103758125865], arg1: 0.8506063568503134, arg2: 0.8658103758125865
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8897690876754529], arg1: 0.8658103758125865, arg2: 0.8897690876754529
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8986044176113637], arg1: 0.8897690876754529, arg2: 0.8986044176113637
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8994287053144517], arg1: 0.8986044176113637, arg2: 0.8994287053144517
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8994895637143085], arg1: 0.8994287053144517, arg2: 0.8994895637143085
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8996659228140144], arg1: 0.8994895637143085, arg2: 0.8996659228140144
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.899756240085032], arg1: 0.8996659228140144, arg2: 0.899756240085032
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8999302539945363], arg1: 0.899756240085032, arg2: 0.8999302539945363
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 0.8999779051067591], arg1: 0.8999302539945363, arg2: 0.8999779051067591
message changed: ReadOnlyStringProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: message, value: Loading complete], arg1: Loading http://www.nytimes.com/, arg2: Loading complete
Process changed: ReadOnlyDoubleProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: progress, value: 1.0], arg1: 0.8999779051067591, arg2: 1.0
old state: RUNNING, new state: SUCCEEDED, arg0: ReadOnlyObjectProperty [bean: javafx.scene.web.WebEngine$LoadWorker@4d8ed331, name: state, value: SUCCEEDED]
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class SwingBrowser extends JPanel {

    WebEngine webEngine;

    private static void initAndShowGUI() {

        JFrame frame = new JFrame();

        frame.add(new SwingBrowser());
        frame.setSize(1024, 768);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public SwingBrowser() {

        JPanel toolbar = new JPanel();
        toolbar.setLayout(new FlowLayout());

        JButton button;

        button = new JButton("Google");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                loadPage("http://www.google.com");
            }
        });

        toolbar.add(button);

        button = new JButton("NY Times");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                loadPage("http://www.nytimes.com");
            }
        });

        toolbar.add(button);

        final JFXPanel fxPanel = new JFXPanel();

        setLayout(new BorderLayout());
        add(fxPanel, BorderLayout.CENTER);
        add(toolbar, BorderLayout.NORTH);

        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                initFX(fxPanel);
            }
        });
    }

    private void loadPage(String url) {

        Platform.runLater(new Runnable() {
            @Override
            public void run() {

                webEngine.load(url);

            }
        });

    }

    private void initFX(JFXPanel fxPanel) {
        Scene scene = createScene();
        fxPanel.setScene(scene);
    }

    private Scene createScene() {

        WebView webView = new WebView();

        webEngine = webView.getEngine();

        webEngine.getLoadWorker().progressProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) {
                System.out.println("Process changed: " + arg0 + ", arg1: " + arg1 + ", arg2: " + arg2);
            }
        });

        webEngine.getLoadWorker().messageProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
                System.out.println("message changed: " + arg0 + ", arg1: " + arg1 + ", arg2: " + arg2);
            }
        });

        webEngine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() {
            @Override
            public void changed(ObservableValue<? extends Throwable> arg0, Throwable arg1, Throwable arg2) {
                System.out.println(arg0);
                System.out.println(arg1);
                System.out.println(arg2);
            }
        });

        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
            @Override
            public void changed(ObservableValue<? extends Worker.State> arg0, Worker.State arg1, Worker.State arg2) {
                System.out.println("old state: " + arg1 + ", new state: " + arg2 + ", arg0: " + arg0);
            }
        });

        webEngine.load("http://www.google.com");

        BorderPane bp = new BorderPane();

        bp.setCenter(webView);

        Scene scene = new Scene(bp);

        return (scene);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                initAndShowGUI();
            }
        });
    }
}