Как я могу загрузить локальный HTML-файл (не в моем пути к классам) в WebView?
Я изучаю javafx и создаю приложение TodoList. Я хочу включить некоторые функции, такие как стилизация текста, использование списков маркеров и т. Д., И для этого я добавил HTMLEditor в свое приложение, которое хранит файлы html для загрузки моего WebView. Чтобы проверить сохранение и загрузку html-файлов, я сохранил пример файла 'test.html' (которого нет в моем пути к классам) и хочу, чтобы WebView загрузил его. вот мой код:
Main.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.web.WebView?>
<GridPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="sample.Controller" hgap="10" vgap="10">
<WebView GridPane.rowIndex="0" GridPane.columnIndex="0" fx:id="webView"/>
</GridPane>
Fxml Controller.java
public class Controller{
@FXML private WebView webView;
private WebEngine engine = webView.getEngine();
@FXML
public void initialize() throws IOException{
//code for some ArrayList initialization
engine.load("/home/jyotiproy/TodoOutput/test.html");
}
}
Main.java, который загружает программу
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
primaryStage.setTitle("Todo List");
primaryStage.setScene(new Scene(root, 1200, 600));
primaryStage.show();
primaryStage.setResizable(false);
}
public static void main(String[] args) {
launch(args);
}
}
Я не получаю ошибок или исключений. В пути 'test.html' нет опечатки, и редактор HTML работает нормально и сохраняет файл test.html, но WebView ничего не загружает. Вот моя структура приложения:
1 ответ
Благодаря @Slaw и @Sidrick вопрос был решен. Изменения, которые были необходимы в исходном коде, были добавлением file://
в engine.load()
часть кода.
Рабочий код
@FXML private WebView webView;
@FXML
public void initialize() throws IOException{
//Some ArrayList Initialization
WebEngine engine = webView.getEngine();
engine.load("file:///home/jyotiproy/Todolist/test2.html");
}
Скриншот: