New version is available
JxBrowser 7 的支持将于 2025 年 10 月终止,届时将不再提供 Chromium 更新和关键修复。 我们建议您升级至 JxBrowser 8,以享受新功能和改进带来的更多优势。 如果您有任何疑问或在升级过程中需要帮助,欢迎随时联系我们
List icon 目录

JxBrowser 在 JavaFX 中的使用

在 JavaFX Gradle 项目中使用 JxBrowser 的最简单方法是克隆 GitHub 仓库,其中所有内容都已设置完毕,可以直接使用。

前提条件

获取项目

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

git clone https://github.com/TeamDev-IP/JxBrowser-QuickStart-Gradle-JavaFX.git
git checkout v7
cd JxBrowser-QuickStart-Gradle-JavaFX

运行 JavaFX 应用程序

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

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

启动后,您将看到一个包含 BrowserView 组件的 JavaFX 应用程序,展示的网页为 https://html5test.teamdev.com

JavaFX 应用中的 BrowserView

项目概述

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

配置 Gradle 项目

Gradle 项目使用 JxBrowser Gradle 插件来添加必要的 JxBrowser 依赖项并获取当前平台的 Chromium 二进制文件。

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

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

    // 允许添加 JxBrowser 依赖项。
    id("com.teamdev.jxbrowser") version "1.2.1"
}

repositories {
    mavenCentral()
}

jxbrowser {
    //  使用最新稳定的 JxBrowser 版本。
    version = "7.43.3"
}

dependencies {
    // 检测当前平台并获取对应的 Chromium 二进制文件。
    implementation(jxbrowser.currentPlatform)
    
    // 添加对 JavaFX UI 工具包集成的依赖项。
    implementation(jxbrowser.javafx)
}

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

    // 定义 Kotlin 应用程序的主类。
    // mainClass.set("com.teamdev.jxbrowser.quickstart.gradle.javafx.KotlinAppKt")
}

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

将 JxBrowser 嵌入 JavaFX

该项目包含两个 JavaFX 应用程序实现:JavaKotlin

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

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

import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.view.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public final class App extends Application {

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

        Browser browser = engine.newBrowser();

        // 加载所需网页。
        browser.navigation().loadUrl("https://html5test.teamdev.com");

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

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

        // 关闭 Chromium 并释放分配的资源。
        primaryStage.setOnCloseRequest(event -> engine.close());
    }
}
import com.teamdev.jxbrowser.engine.Engine
import com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED
import com.teamdev.jxbrowser.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.newInstance(HARDWARE_ACCELERATED)

        // 创建 Browser 实例。
        val browser = engine.newBrowser()

        // 加载所需网页。
        browser.navigation().loadUrl("https://html5test.teamdev.com")

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

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

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

    fun run() {
        launch()
    }
}

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

了解更多