List icon 目录

JxBrowser 在 JavaFX 中的使用

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

前提条件

获取项目

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

git clone https://github.com/TeamDev-IP/JxBrowser-QuickStart-Gradle-JavaFX.git
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 二进制文件。JavaFX Gradle 插件用于简化 JavaFX 集成。

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

Kotlin
plugins {
    java
    application
    kotlin("jvm") version "2.0.0"
    
    // 允许无缝集成 JavaFX。
    id("org.openjfx.javafxplugin") version "0.1.0"

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

repositories {
    mavenCentral()
}

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

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

javafx {
    modules("javafx.controls")
}

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.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。
        var engine = Engine.newInstance(HARDWARE_ACCELERATED);

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

        // 创建并嵌入 JavaFX BrowserView 组件以显示 Web 内容。
        var view = BrowserView.newInstance(browser);
        
        var 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.dsl.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(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()
}

了解更多