JavaFX 架构

2024 年 8 月 29 日 | 4 分钟阅读

下图显示了 JavaFX 平台的完整架构。有各种内置组件相互连接。然而,JavaFX 包含一套丰富的 API,足以开发在许多平台上一致运行的富互联网应用程序。

JavaFX 公共 API

JavaFX 架构的顶层包含 JavaFX 公共 API,它提供了执行功能完整的 JavaFX 应用程序所需的所有类。此 API 的所有包的列表如下。

包名描述
javafx.animation提供一组负责基于过渡的动画的类
javafx.application提供应用程序生命周期方法
javafx.collections提供可以处理集合和相关实用程序的类
javafx.concurrent提供负责多任务处理的类
javafx.embed.swing提供可以在 swing 代码中使用的类集
javafx.embed.swt提供可以在 swt 代码中使用的类集
javafx.event提供处理事件及其处理的类
javafx.fxml包含负责从标记加载层次结构的类集
javafx.geometry提供包含在对象上运行 2D 几何体的方法的 2D 类。
javafx.scene提供处理场景图 API 的类
javafx.scene.canvas提供处理画布的类集。
javafx.scene.control包含所有 JavaFX 组件的类。
javafx.scene.effect包含将图形效果应用于场景图节点的类集
javafx.scene.image提供用于加载和显示图像的类集
javafx.scene.input提供鼠标和键盘事件的类集
javafx.scene.layout提供支持用户界面布局的类集
javafx.scene.media提供将音频和视频集成到 JavaFX 应用程序中的类集
javafx.scene.paint提供用于颜色和渐变的类集,以便在渲染场景图时填充形状和背景。
javafx.scene.shape提供一组 2D 类,用于对与 2D 几何相关的对象执行操作。
javafx.scene.text提供用于字体和渲染文本节点的类集。
javafx.scene.transform提供用于对对象执行旋转、缩放、剪切操作的类集。
javafx.scene.web提供加载和显示 Web 内容的方法。
javafx.stage为 JavaFX 内容提供顶级容器类。
javafx.util提供实用程序类
javafx.util.converter此包用于 JavaFX 的标准字符串转换器

场景图

它是构建 JavaFX 应用程序的起点。它是节点的层次树,表示用户界面的所有视觉元素。它还具有处理事件的能力。通常,场景图可以定义为节点的集合。

每个节点都有其单独的 id、样式和体积。场景图的每个节点只能有一个父节点和零个或多个子节点。

场景图上的所有实现实际上都应用于其节点。javafx.scene package 中存在各种类,用于创建、修改和对节点应用一些转换。我们将在后面详细讨论场景图。

图形引擎

JavaFX 图形引擎为场景图提供图形支持。它基本上同时支持 2D 和 3D 图形。当系统上存在的图形硬件无法支持硬件加速渲染时,它提供软件渲染。

JavaFX 中的两个图形加速管道是

棱镜 (Prism)

棱镜可以被视为高性能硬件加速图形管道。它具有渲染 2D 和 3D 图形的能力。Prism 实现了在不同平台上渲染图形的不同方式。

  • windows XP 或 vista 上的 DirectX 9
  • windows 7 上的 DirectX 11
  • Mac、Linux 和嵌入式设备上的 OpenGL
  • 当硬件加速不可能时,使用 Java 2D

Quantum 工具包

Quantum Tool Kit 用于将 prism 和 glass windowing 工具包绑定在一起,并使它们可用于堆栈中的上述层。

Glass Windowing 工具包

它位于 JavaFX 图形堆栈的最低层。基本上可以将其视为一个平台相关的层,它充当 JavaFX 平台和本机操作系统之间的接口。

它负责提供操作系统服务,例如管理窗口、计时器、事件队列和表面。

Web View

我们还可以将 HTML 内容嵌入到 JavaFX 场景图中。为此,JavaFX 使用一个名为 web view 的组件。Web view 使用 web kit(一个内部开源浏览器)并且可以渲染 HTM5、DOM、CSS、SVG 和 JavaScript。

使用 web view,我们可以从 JavaFX 应用程序渲染 HTML 内容,还可以将一些 CSS 样式应用于用户界面。

Media Engine

通过使用 Media engine,JavaFX 应用程序可以支持音频和视频媒体文件的播放。JavaFX 媒体引擎依赖于一个名为 G Streamer 的开源引擎。包 javafx.scene.media 包含所有可以为 JavaFX 应用程序提供媒体功能的类和接口。


JavaFX Architecture Media Engine