最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2025年05月11日 15:54:55   作者:Mcband  
在現(xiàn)代軟件開發(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)代軟件開發(fā)中,許多應(yīng)用需要在桌面程序中嵌入 Web 頁(yè)面。例如,你可能需要在 Java 桌面應(yīng)用中嵌入一部分 Web 前端,或者加載一個(gè) HTML5 界面以增強(qiáng)用戶體驗(yàn)。JavaFX 提供了 WebView 組件,使開發(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 依賴

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

<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 編寫 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)開發(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)文章

  • 基于SpringAop中JoinPoint對(duì)象的使用說(shuō)明

    基于SpringAop中JoinPoint對(duì)象的使用說(shuō)明

    這篇文章主要介紹了基于SpringAop中JoinPoint對(duì)象的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringBoot使用@PathVariable進(jìn)行數(shù)據(jù)校驗(yàn)的流程步驟

    SpringBoot使用@PathVariable進(jìn)行數(shù)據(jù)校驗(yàn)的流程步驟

    在SpringBoot項(xiàng)目中,我們經(jīng)常需要從 URL 中獲取參數(shù)并進(jìn)行相關(guān)的數(shù)據(jù)校驗(yàn),而@PathVariable注解就是一種非常方便的方式,可以讓我們?cè)诜椒▍?shù)中直接獲取URL中的參數(shù),并進(jìn)行數(shù)據(jù)校驗(yàn),本文將介紹如何使用@PathVariable注解進(jìn)行數(shù)據(jù)校驗(yàn)
    2023-06-06
  • @Value與@ConfigurationProperties的用法及區(qū)別說(shuō)明

    @Value與@ConfigurationProperties的用法及區(qū)別說(shuō)明

    SpringBoot開發(fā)中,@Value與@ConfigurationProperties詳解,兩種注解使用方法、區(qū)別及適用場(chǎng)景解析
    2026-06-06
  • Java?easyexcel使用教程之導(dǎo)出篇

    Java?easyexcel使用教程之導(dǎo)出篇

    EasyExcel是阿里巴巴開源的一個(gè)excel處理框架,以使用簡(jiǎn)單,節(jié)省內(nèi)存著稱,下面這篇文章主要給大家介紹了關(guān)于Java?easyexcel使用教程之導(dǎo)出篇的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 詳解Spring集成Redis的兩種方式

    詳解Spring集成Redis的兩種方式

    在工作中,我們用到分布式緩存的時(shí)候,第一選擇就是Redis,今天介紹一下SpringBoot如何集成Redis的,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • SpringBoot使用AOP+注解實(shí)現(xiàn)簡(jiǎn)單的權(quán)限驗(yàn)證的方法

    SpringBoot使用AOP+注解實(shí)現(xiàn)簡(jiǎn)單的權(quán)限驗(yàn)證的方法

    這篇文章主要介紹了SpringBoot使用AOP+注解實(shí)現(xiàn)簡(jiǎn)單的權(quán)限驗(yàn)證的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • spring boot mybatis枚舉映射示例代碼

    spring boot mybatis枚舉映射示例代碼

    這篇文章主要給大家介紹了關(guān)于spring boot mybatis枚舉映射的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

    如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

    Spark SQL 是一個(gè)用來(lái)處理結(jié)構(gòu)化數(shù)據(jù)的spark組件。它提供了一個(gè)叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個(gè)分布式的SQL查詢引擎。這篇文章主要介紹了如何使用IDEA開發(fā)Spark SQL程序(一文搞懂),需要的朋友可以參考下
    2021-08-08
  • Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

    Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

    相信大家在日常開發(fā)中這三種方法用到的應(yīng)該很多,本文主要介紹了Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別,感興趣的可以了解一下
    2021-09-09
  • 解決IDEA報(bào)錯(cuò)java無(wú)效的目標(biāo)發(fā)行版:22

    解決IDEA報(bào)錯(cuò)java無(wú)效的目標(biāo)發(fā)行版:22

    在使用IDEA編譯項(xiàng)目時(shí),可能會(huì)遇到JDK版本不一致的錯(cuò)誤,這篇文章主要介紹了解決IDEA報(bào)錯(cuò)java無(wú)效的目標(biāo)發(fā)行版:22的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10

最新評(píng)論

兴山县| 定兴县| 百色市| 延安市| 仙游县| 禹州市| 馆陶县| 临湘市| 清流县| 丹巴县| 桐城市| 察雅县| 无为县| 革吉县| 公安县| 天柱县| 离岛区| 河西区| 泽州县| 潞城市| 繁峙县| 肃宁县| 民丰县| 呼图壁县| 建阳市| 宁南县| 阳谷县| 丘北县| 遵义县| 信宜市| 铁力市| 大理市| 庆安县| 博野县| 大姚县| 溧水县| 岐山县| 武陟县| 台中市| 融水| 宁安市|