亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java使用WebView實(shí)現(xiàn)桌面程序的技術(shù)指南

 更新時(shí)間:2025年05月11日 15:54:55   作者:Mcband  
在現(xiàn)代軟件開(kāi)發(fā)中,許多應(yīng)用需要在桌面程序中嵌入 Web 頁(yè)面,例如,你可能需要在 Java 桌面應(yīng)用中嵌入一部分 Web 前端,或者加載一個(gè) HTML5 界面以增強(qiáng)用戶體驗(yàn),所以本文給大家介紹了Java使用WebView實(shí)現(xiàn)桌面程序的技術(shù)指南,需要的朋友可以參考下

1、簡(jiǎn)述

在現(xiàn)代軟件開(kāi)發(fā)中,許多應(yīng)用需要在桌面程序中嵌入 Web 頁(yè)面。例如,你可能需要在 Java 桌面應(yīng)用中嵌入一部分 Web 前端,或者加載一個(gè) HTML5 界面以增強(qiáng)用戶體驗(yàn)。JavaFX 提供了 WebView 組件,使開(kāi)發(fā)者可以輕松地在 Java 應(yīng)用程序中加載和顯示 Web 頁(yè)面。

本博客將介紹 JavaFX WebView 的基本用法,并提供一個(gè)完整的示例,演示如何加載網(wǎng)頁(yè)并與 JavaScript 交互。

2、WebView 特點(diǎn)

WebView 是 JavaFX 提供的一個(gè)嵌入式瀏覽器組件,它基于 WebKit 渲染引擎,支持 HTML、CSS 和 JavaScript,適用于在 Java 應(yīng)用中顯示 Web 內(nèi)容。它的主要特點(diǎn)包括:

  • 支持加載本地或遠(yuǎn)程 HTML 頁(yè)面
  • 允許 Java 與 JavaScript 互相調(diào)用
  • 提供完整的網(wǎng)頁(yè)渲染能力
  • 適用于 JavaFX 桌面應(yīng)用

3、搭建 WebView 示例

3.1 添加 JavaFX 依賴(lài)

如果你使用 Maven,需要在 pom.xml 文件中添加 JavaFX 依賴(lài):

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>17</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>17</version>
    </dependency>
</dependencies>

3.2 編寫(xiě) WebView 示例代碼

下面的 Java 代碼演示了如何使用 WebView 加載網(wǎng)頁(yè),并提供了簡(jiǎn)單的 JavaScript 交互功能。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewDemo extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 創(chuàng)建 WebView
        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();

        // 加載網(wǎng)頁(yè),可以是本地文件或在線網(wǎng)頁(yè)
        webEngine.load("https://www.baidu.com");

        // 創(chuàng)建一個(gè) JavaFX 窗口
        VBox root = new VBox(webView);
        Scene scene = new Scene(root, 800, 600);

        primaryStage.setTitle("Java WebView 示例");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

3.3 運(yùn)行效果

運(yùn)行上面的代碼后,會(huì)彈出一個(gè) JavaFX 窗口,并在其中加載指定的 Web 頁(yè)面。

4、實(shí)現(xiàn) Java 和 JavaScript 交互

4.1 在 Java 中調(diào)用 JavaScript

我們可以通過(guò) WebEngine 執(zhí)行 JavaScript 代碼,例如:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewJavaScriptDemo extends Application {

    @Override
    public void start(Stage primaryStage) {
        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();
        webEngine.loadContent("<html><body><h2>Java 與 JavaScript 交互</h2></body></html>");

        // 處理 JavaScript alert 彈窗
        webEngine.setOnAlert(event -> {
            Alert alert = new Alert(Alert.AlertType.INFORMATION);
            alert.setTitle("JavaScript Alert");
            alert.setHeaderText(null);
            alert.setContentText(event.getData());
            alert.showAndWait();
        });

        // 創(chuàng)建按鈕,點(diǎn)擊后觸發(fā) Java 調(diào)用 JavaScript
        Button button = new Button("調(diào)用 JavaScript");
        button.setOnAction(event -> webEngine.executeScript("alert('Java 調(diào)用 JavaScript!');"));


        VBox root = new VBox(webView, button);
        Scene scene = new Scene(root, 800, 600);

        primaryStage.setTitle("JavaFX WebView JavaScript 交互");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

點(diǎn)擊按鈕后,會(huì)彈出 JavaScript alert 彈窗。

4.2 在 JavaScript 中調(diào)用 Java 方法

你可以讓 JavaScript 調(diào)用 Java 方法,例如:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import netscape.javascript.JSObject;

public class JavaScriptToJavaDemo extends Application {
    public static class JavaBridge {
        public void showMessage(String message) {
            System.out.println("JavaScript 調(diào)用 Java: " + message);
        }
    }

    @Override
    public void start(Stage primaryStage) {
        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();

        webEngine.load("file:///E:\\lk\\springboot-example\\lm-javafx\\src\\main\\resources\\html\\activity.html");

        // 綁定 Java 對(duì)象到 JavaScript
        JSObject window = (JSObject) webEngine.executeScript("window");
        window.setMember("javaBridge", new JavaBridge());

        VBox root = new VBox(webView);
        Scene scene = new Scene(root, 800, 600);

        primaryStage.setTitle("JavaScript 調(diào)用 Java 示例");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

在resource目錄創(chuàng)建一個(gè)html目錄,存放當(dāng)前交互的html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
<h2>JavaScript 調(diào)用 Java</h2>
<button onclick="javaBridge.showMessage('Hello from JavaScript!')">點(diǎn)擊調(diào)用 Java 方法</button>
</body>
<script>
    function callJava() {
        javaBridge.showMessage("JavaScript 觸發(fā) Java 方法!");
    }
</script>
</html>

在 HTML 頁(yè)面中點(diǎn)擊按鈕后,JavaScript 會(huì)調(diào)用 Java 的 showMessage 方法,并在控制臺(tái)打印消息:

JavaScript 調(diào)用 Java: Hello from JavaScript!
JavaScript 調(diào)用 Java: Hello from JavaScript!
JavaScript 調(diào)用 Java: Hello from JavaScript

5、打包為可執(zhí)行文件(.exe)

可以使用 jpackage 將 JavaFX 應(yīng)用打包為可執(zhí)行文件(.exe):

jpackage --name WebViewApp --input . --main-jar WebViewDemo.jar --main-class WebViewDemo --type exe

這樣就可以將 Java WebView 應(yīng)用打包為 Windows 可執(zhí)行文件。

6、總結(jié)

在本博客中,我們介紹了如何在 JavaFX 中使用 WebView 加載網(wǎng)頁(yè),并實(shí)現(xiàn) Java 與 JavaScript 之間的交互。核心內(nèi)容包括:

  • 在 Java 中嵌入 WebView 并加載網(wǎng)頁(yè)
  • Java 調(diào)用 JavaScript 代碼
  • JavaScript 調(diào)用 Java 方法
  • 將 Java WebView 應(yīng)用打包成 .exe

通過(guò) WebView,可以輕松地在 Java 桌面應(yīng)用中嵌入 Web 技術(shù),從而結(jié)合 Web 和 Java 的優(yōu)勢(shì)來(lái)開(kāi)發(fā)強(qiáng)大的桌面應(yīng)用。

以上就是Java使用WebView實(shí)現(xiàn)桌面程序的技術(shù)指南的詳細(xì)內(nèi)容,更多關(guān)于Java WebView桌面程序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot整合redis+Aop防止重復(fù)提交的實(shí)現(xiàn)

    SpringBoot整合redis+Aop防止重復(fù)提交的實(shí)現(xiàn)

    Spring Boot通過(guò)AOP可以實(shí)現(xiàn)防止表單重復(fù)提交,本文主要介紹了SpringBoot整合redis+Aop防止重復(fù)提交的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java多線程Thread類(lèi)的使用詳解

    Java多線程Thread類(lèi)的使用詳解

    這篇文章主要介紹了Java多線程Thread類(lèi)的使用及注意事項(xiàng),在java標(biāo)準(zhǔn)庫(kù)中提供了一個(gè)Thread類(lèi)來(lái)表示/操作線程,Thread類(lèi)也可以視為是java標(biāo)準(zhǔn)庫(kù)提供的API
    2022-12-12
  • MyBatis的<foreach>以及java代碼的批處理方式

    MyBatis的<foreach>以及java代碼的批處理方式

    這篇文章主要介紹了MyBatis的<foreach>以及java代碼的批處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Flowable整合SpringBoot實(shí)現(xiàn)的示例代碼

    Flowable整合SpringBoot實(shí)現(xiàn)的示例代碼

    本文詳細(xì)介紹了如何在SpringBoot項(xiàng)目中整合Flowable進(jìn)行工作流管理,包括依賴(lài)引入、流程部署與啟動(dòng)、表結(jié)構(gòu)、流程掛起和激活以及任務(wù)分配等關(guān)鍵操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • mybatis批量更新與插入方式

    mybatis批量更新與插入方式

    這篇文章主要介紹了mybatis批量更新與插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • idea創(chuàng)建SpringBoot自動(dòng)創(chuàng)建Lombok無(wú)效果的問(wèn)題解決方案

    idea創(chuàng)建SpringBoot自動(dòng)創(chuàng)建Lombok無(wú)效果的問(wèn)題解決方案

    這篇文章主要介紹了idea創(chuàng)建SpringBoot自動(dòng)創(chuàng)建Lombok無(wú)效果的問(wèn)題解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • java開(kāi)發(fā)技巧代碼寫(xiě)的快且bug少的原因分析

    java開(kāi)發(fā)技巧代碼寫(xiě)的快且bug少的原因分析

    這篇文章主要為大家介紹了java開(kāi)發(fā)中代碼寫(xiě)的快且bug少的原因分析及技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 基于RecyclerChart的KLine繪制詳解

    基于RecyclerChart的KLine繪制詳解

    這篇文章主要為大家詳細(xì)介紹了基于RecyclerChart實(shí)現(xiàn)KLine繪制的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • java.util.ArrayDeque類(lèi)使用方法詳解

    java.util.ArrayDeque類(lèi)使用方法詳解

    這篇文章主要介紹了java.util.ArrayDeque類(lèi)使用方法,java.util.ArrayDeque類(lèi)提供了可調(diào)整大小的陣列,并實(shí)現(xiàn)了Deque接口,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫(kù)自動(dòng)更新時(shí)間的一些問(wèn)題

    關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫(kù)自動(dòng)更新時(shí)間的一些問(wèn)題

    這篇文章主要介紹了關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫(kù)自動(dòng)更新時(shí)間的一些問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論