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

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

本文关键字:HTML 一个 amp JS 项目 互联网 静态 JavaFX JavaFx Java 插入      更新时间:2023-09-26

我正在做一个任务,我们需要将一个基于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 上的 JavaDoc 并WebEngine '