Я изучаю 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.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 ничего не загружает. Вот структура моего приложения:
File
. Преобразуйте содержимое файла в форматString
. - person Sedrick   schedule 28.07.2019System.out.println(f.toString())
понять, в чем проблема? - person Sedrick   schedule 28.07.2019WebEngine#load(String)
< /a> ожидает URL-адрес в формеString
. Попробуйте что-нибудь вроде"file:///home/jyotiproy/TodoOutput/test.html"
. Если вы используете подход, предложенный @Sedrick (т. е. читать содержимое файла вString
), вам следует использоватьWebEngine#loadContent(String)
. - person Slaw   schedule 28.07.2019engine.load("file:///home/jyotiproy/TodoOutput/test.html");
, но все равно ничего не происходит. Теперь думаю, то ли я сделал что-то не так в объявлении FXML или не связал его с контроллером должным образом. Что-то не так с этим кодом? - person jyoti proy   schedule 28.07.2019loadContent(String)
. - person Sedrick   schedule 28.07.2019private WebEngine engine = webView.getEngine();
похоже, что он должен бросать NPE. Если это не так, то вы делаете что-то, что не отображается (т. е. ваш код не является минимально воспроизводимым примером а>). - person Slaw   schedule 28.07.2019File f = new File("/home/jyotiproy/TodoOutput/test.html");
String htmlString = new String (Files.readAllBytes(Paths.get(f.toString())));
``` engine.loadContent(htmlString);``` все равно ничего не происходит - person jyoti proy   schedule 28.07.2019FXMLLoader
.WebEngine
, на который у вас есть ссылка, связан сWebView
, который вы создали, а не сWebView
, который был создан (и введен)FXMLLoader
(т. е. тот, который отображается). - person Slaw   schedule 28.07.2019