Как я могу загрузить локальный 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");
    }

Скриншот:

https://i.s tack.imgur.com/2epT7.jpg

Другие вопросы по тегам