gpt4 book ai didi

JavaFX WebView - 未加载页面

转载 作者:行者123 更新时间:2023-11-30 03:50:45 25 4
gpt4 key购买 nike

我已经在 J​​avaFX Sceene 构建器中创建了我的 RootLayout。它包含 BorderPane 和位于其中心的具有三个选项卡的 TabPane。在第一个选项卡上我想要 WebView。我的 RootController 包含:

      @FXML
private WebView webview;

@FXML
private WebEngine webengine;

我已经通过 fx:id 和 webview 变量在 RootLayout.fxml 中连接了我的 WebView。我在 RootLayoutController 中的初始化方法是(RootLayout Controller 在 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");

}

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

最佳答案

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

永远不要初始化使用@FXML注入(inject)的引用。具体来说,因为你有

@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");
}

关于JavaFX WebView - 未加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com