在 JavaFX 中使用 Fuzio

在 JavaFX Gradle 项目中使用 Fuzio 最简单的方法,是克隆我们准备好的 Gitee 仓库,所有内容都已配置完毕,可以直接运行。

前提条件 

获取项目 

使用以下命令克隆 Gitee 仓库:

git clone https://gitee.com/jiku-technology-dev/fuzio-quickstart-gradle-javafx.git
cd fuzio-quickstart-gradle-javafx

运行 JavaFX 应用程序 

使用以下命令构建并运行 JavaFX 应用程序:

./gradlew run -Dfuzio.license.key=<your_license_key>

启动后,你将看到一个嵌入了 BrowserView 组件的 JavaFX 应用,其中显示 https://html5test.jiku.co

JavaFX 应用中的 BrowserView

项目概述 

本节将介绍如何配置 Gradle 项目以引入 Fuzio,以及如何将 Fuzio 的 BrowserView 组件嵌入到 JavaFX 场景中以显示已加载网页的内容。

配置 Gradle 项目 

Gradle 项目使用 Fuzio Gradle 插件 来添加所需的 Fuzio 依赖项,并自动获取当前平台的 Chromium 二进制文件。JavaFX Gradle 插件 用于简化 JavaFX 集成。

以下是 build.gradle.kts 的配置方式:

plugins {
    java
    application
    kotlin("jvm") version "2.0.0"

    // 简化 JavaFX 集成。
    id("org.openjfx.javafxplugin") version "0.1.0"

    // 添加 Fuzio 依赖项。
    id("tech.fuzio.gradle") version "1.0.0"
}

repositories {
    mavenCentral()
}

fuzio {
    // 使用最新稳定的 Fuzio 版本。
    version = "2026.3.0"
}

dependencies {
    // 检测当前平台并获取对应的 Chromium 二进制文件。
    implementation(fuzio.currentPlatform)

    // 添加 JavaFX UI 工具包集成的依赖项。
    implementation(fuzio.javafx)

    // 添加 Fuzio Kotlin DSL 的依赖项。
    implementation(fuzio.kotlin)
}

javafx {
    modules("javafx.controls")
}

application {
    // 定义 Java 应用程序的主类。
    mainClass.set("tech.fuzio.quickstart.gradle.javafx.App")

    // 或者,你也可以运行 Kotlin 示例:
    // mainClass.set("tech.fuzio.quickstart.gradle.javafx.AppKt")
}

tasks.withType<JavaExec> {
    // 将命令行中的所有 Java 系统属性传递给 JavaExec 任务,
    // 以便注入 Fuzio 许可证密钥。
    systemProperties(System.getProperties().mapKeys { it.key as String })
}

在 JavaFX 中嵌入 Fuzio 

项目中提供了两种 JavaFX 应用实现:JavaKotlin

两种实现类似,都演示了如何:

  1. 初始化 Engine(Chromium)实例。
  2. 创建 Browser 实例。
  3. 加载所需网页。
  4. 将 Web 视图组件嵌入 JavaFX 场景以显示已加载的网页:
Java
Kotlin
import static tech.fuzio.engine.RenderingMode.HARDWARE_ACCELERATED;

import tech.fuzio.engine.Engine;
import tech.fuzio.view.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public final class JavaFxApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 初始化 Chromium。
        var engine = Engine.newInstance(HARDWARE_ACCELERATED);

        // 创建 Browser 实例并加载所需网页。
        var browser = engine.newBrowser();
        browser.navigation().loadUrl("https://html5test.jiku.co");

        // 创建并嵌入 JavaFX BrowserView 组件以显示 Web 内容。
        var view = BrowserView.newInstance(browser);

        var scene = new Scene(new BorderPane(view), 1280, 800);
        primaryStage.setTitle("Fuzio JavaFX");
        primaryStage.setScene(scene);
        primaryStage.show();

        // 关闭 Chromium 并释放已分配的资源。
        primaryStage.setOnCloseRequest(event -> engine.close());
    }
}
import tech.fuzio.dsl.Engine
import tech.fuzio.engine.RenderingMode.HARDWARE_ACCELERATED
import tech.fuzio.view.javafx.BrowserView
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.layout.BorderPane
import javafx.stage.Stage

class KotlinApp : Application() {
    override fun start(primaryStage: Stage) {
        // 初始化 Chromium。
        val engine = Engine(HARDWARE_ACCELERATED)

        // 创建 Browser 实例并加载所需网页。
        val browser = engine.newBrowser()
        browser.navigation().loadUrl("https://html5test.jiku.co")

        // 创建并嵌入 JavaFX BrowserView 组件以显示 Web 内容。
        val view = BrowserView.newInstance(browser)

        val scene = Scene(BorderPane(view), 1280.0, 800.0)
        primaryStage.title = "Fuzio JavaFX"
        primaryStage.scene = scene
        primaryStage.show()

        // 关闭 Chromium 并释放已分配的资源。
        primaryStage.setOnCloseRequest { engine.close() }
    }
    
    fun run() {
        launch()
    }
}

fun main() {
    KotlinApp().run()
}

了解更多 

微信咨询

即库客服

微信公众号二维码

技术客服

微信公众号二维码