如何将本地 html 文件(不在我的类路径中)加载到 WebView?
How can I load a Local html file (not in my classpath) to 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 不加载任何内容。
这是我的应用程序结构:
感谢@Slaw 和@Sidrick,问题已解决。
原始代码中需要的更改是在代码的 engine.load()
部分添加 file://
。
工作代码
@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");
}
截图:
我正在学习 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 不加载任何内容。
这是我的应用程序结构:
感谢@Slaw 和@Sidrick,问题已解决。
原始代码中需要的更改是在代码的 engine.load()
部分添加 file://
。
工作代码
@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");
}
截图: