Я создал свой 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");
}
Но страница не загружается. Какие-либо предложения?
Это дубликат других вопросов, но я не могу найти их в разумные сроки поиска.
Никогда не инициализируйте ссылки, которые вводятся с помощью @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");
}