Java、JavaFx:在 JavaFX 容器中插入一个 HTML&JS(静态,无互联网)项目

Java, JavaFx : Inserting a HTML&JS(static,no internet) project inside a JavaFX container

我正在执行一项任务,我们需要将我们的一个 HTML 和基于 JS 的项目放入 JavaFX 项目或任何其他合适的容器中。目的是创建一个可以直接部署的应用程序,并且可以防止任何用户查看 HTML & JS 的源代码。

前段时间在看JavaFX的时候,看到它支持JS,可以用JS。有什么方法可以创建一个容器,我可以通过给定路径等将 HTML&JS 文件放入其中?

我该怎么做?无论我想做什么,它叫什么。任何帮助、指点、建议都会很好。

初试

public class Main extends Application {

    private Scene scene;
    MyBrowser myBrowser;

    @Override
    public void start(Stage primaryStage) throws Exception{
        primaryStage.setTitle("Test web");

        myBrowser = new MyBrowser();
        scene = new Scene(myBrowser, 1920, 1200);

        primaryStage.setScene(scene);
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}


class MyBrowser extends Region {

    final String hellohtml = "hello.html";

    WebView webView = new WebView();
    WebEngine webEngine = webView.getEngine();

    public MyBrowser(){

        URL urlHello = getClass().getResource("hello.html");
        webEngine.load(urlHello.toExternalForm());

        getChildren().add(webView);
    }
}

正如@sillyfly 建议使用 WebView:

File f = new File(..);
// ..
final WebView webview = new WebView();
webview.getEngine().load(f.toURI().toURL().toString());

对我来说最困难的部分总是找出用于引用文件的正确位置。

另一种选择是,当您拥有字符串形式的 HTML 以将其作为内容加载时:

String html = ...
webview.getEngine().loadcontent(html)

请务必至少查看 WebView and WebEngine`

上的 JavaDoc