【问题标题】:JavaFX WebView - not loading pageJavaFX WebView - 不加载页面
【发布时间】:2014-07-01 13:32:23
【问题描述】:

我在 JavaFX 场景构建器中创建了我的 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");

    }

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

【问题讨论】:

    标签: java webview javafx


    【解决方案1】:

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

    永远不要初始化使用@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");
    }
    

    【讨论】:

    • 我遇到了同样的问题,但事实证明我只是在 Scene Builder 的 Properties > id 字段中为我的组件的 ID 指定“webView”,而我应该在 Code > 下输入它外汇:身份证。菜鸟失误。
    猜你喜欢
    • 2019-02-13
    • 2012-11-01
    • 1970-01-01
    • 2013-05-07
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多