JavaFX 架构

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

1 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 的标准字符串转换器

2 场景图

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

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

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

3 图形引擎

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

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

3.1 棱镜

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

  • Windows XP 或 vista 上的 DirectX 9
  • Windows 7 上的 DirectX 11
  • Mac、Linux 和嵌入式上的 OpenGL
  • 无法进行硬件加速时的 Java 2D

3.2 量子工具包 

Quantum Tool Kit 用于将棱镜和玻璃窗工具套件绑定在一起,并使它们可用于堆栈中的上述层。

4 Glass Window工具包

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

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

5 网页视图

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

使用 Web 视图,我们可以从 JavaFX 应用程序渲染 HTML 内容,并将一些 CSS 样式应用到用户界面。

6 媒体引擎

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

热门文章

优秀文章