JavaFX WebView - 不加载页面

时间:2014-07-01 13:32:24

标签: java webview javafx

我在JavaFX Sceene构建器中创建了我的RootLayout。它包含BorderPane,并在其中心TabPane中有三个选项卡。在第一个选项卡上我想要WebView。我的RootController包含:

      @FXML
      private WebView webview;

      @FXML 
      private WebEngine webengine;

我通过它的fx:id和webview变量在RootLayout.fxml中连接了我的WebView。 我在RootLayoutController中的初始化方法是(RootLayout控制器在fxml文件中定义):

   @FXML
    private void initialize() {

         this.webview = new WebView();
         this.webengine = this.webview.getEngine();
         this.webengine.load("http://www.oracle.com/us/products/index.html");

    }

但页面未加载。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

这与其他问题重复,但我无法在合理的时间内找到它们。

永远不要初始化使用@FXML注入的引用。具体来说,既然你有

@FXML
private WebView webview ;

然后做错误

this.webview = new WebView();

这会创建一个WebView的新实例,它与您在FXML文件中定义的实例不同。因此,当您加载页面时,您将其加载到新的WebView实例(不是场景图的一部分)中。

此外,我怀疑您实际上是在FXML文件中直接创建WebEngine。所以我认为你需要:

@FXML
private WebView webview ;

private WebEngine webengine ;

public void initialize() {
    this.webengine = this.webview.getEngine();
    this.webengine.load("http://www.oracle.com/us/products/index.html");
}

如果您确实在FXML中定义了webengine,那么您需要

@FXML
private WebView webview ;

@FXML
private WebEngine webengine ;

public void initialize() {
    this.webengine.load("http://www.oracle.com/us/products/index.html");
}