JavaFX WebView - не загружается страница

1

Я создал свой RootLayout внутри JavaFX Sceene builder. Он содержит BorderPane и в центре TabPane с тремя вкладками. На первой вкладке я хочу иметь WebView. Мой RootController содержит:

      @FXML
      private WebView webview;

      @FXML 
      private WebEngine webengine;

Я связал свой WebView в RootLayout.fxml с помощью fx: id с переменной 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");

    }

Но страница не загружается. Какие-либо предложения?

Теги:
javafx
webview

1 ответ

2
Лучший ответ

Это дубликат других вопросов, но я не могу найти их в разумные сроки поиска.

Никогда не инициализируйте ссылки, которые вводятся с помощью @FXML. В частности, поскольку у вас есть

@FXML
private WebView webview ;

это ошибка,

this.webview = new WebView();

Это создает новый экземпляр WebView, который отличается от того, который вы определили в файле FXML. Таким образом, при загрузке страницы вы загружаете ее в новый экземпляр WebView (который не является частью графика сцены).

Кроме того, я сомневаюсь, что вы фактически создаете WebEngine прямо в вашем файле FXML. Поэтому я думаю, что вам нужно:

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

Если вы действительно определяете webengine в FXML, вам нужно

@FXML
private WebView webview ;

@FXML
private WebEngine webengine ;

public void initialize() {
    this.webengine.load("http://www.oracle.com/us/products/index.html");
}
  • 0
    Извините за дублирование, но я работаю отлично. Спасибо !
  • 0
    У меня была та же проблема, но оказалось, что я просто указывал «webView» для идентификатора моего компонента в поле «Свойства> идентификатор» в Scene Builder, когда я должен был ввести его под «Код»> fx: id. Ошибка новичка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню