JavaFX - 架构

JavaFX 提供了一套完整的 API,其中包含一组丰富的类和接口,可用于构建具有丰富图形的 GUI 应用程序。此 API 的重要包是 −

  • javafx.animation − 包含用于向 JavaFX 节点添加基于过渡的动画(如填充、淡入淡出、旋转、缩放和平移)的类。

  • javafx.application − 包含一组负责 JavaFX 应用程序生命周期的类。

  • javafx.css − 包含用于向 JavaFX GUI 应用程序添加类似 CSS 的样式的类。

  • javafx.event −包含用于传递和处理 JavaFX 事件的类和接口。

  • javafx.geometry − 包含用于定义 2D 对象并对其执行操作的类。

  • javafx.stage − 此包包含 JavaFX 应用程序的顶级容器类。

  • javafx.scene − 此包提供支持场景图的类和接口。此外,它还提供画布、图表、控件、效果、图像、输入、布局、媒体、绘制、形状、文本、变换、Web 等子包。有多个组件支持 JavaFX 的这一丰富 API。

下图显示了 JavaFX API 的架构。在这里您可以看到支持 JavaFX API 的组件。

JavaFX API 的架构

场景图

在 JavaFX 中,GUI 应用程序使用场景图进行编码。场景图是构建 GUI 应用程序的起点。它包含称为节点的 (GUI) 应用程序原语。

节点是视觉/图形对象,它可能包括 −

  • 几何(图形)对象 −(2D 和 3D),例如圆形、矩形、多边形等。

  • UI 控件 −,例如按钮、复选框、选择框、文本区域等。

  • 容器 −(布局窗格),例如边框窗格、网格窗格、流窗格等。

  • 媒体元素 −,例如音频、视频和图像对象。

通常,节点集合构成场景图。所有这些节点都按层次顺序排列,如下所示。

Scene Graph

场景图中的每个节点都有一个父节点,不包含任何父节点的节点称为根节点

同样,每个节点都有一个或多个子节点,没有子节点的节点称为叶节点;有子节点的节点称为分支节点

一个节点实例只能添加到场景图一次。场景图的节点可以具有效果、不透明度、变换、事件处理程序、事件处理程序、应用程序特定状态。

Prism

Prism 是一个高性能硬件加速图形管道,用于在 JavaFX 中渲染图形。它可以渲染 2-D 和 3-D 图形。

为了渲染图形,Prism 使用 −

  • Windows XP 和 Vista 上的 DirectX 9。
  • Windows 7 上的 DirectX 11。
  • Mac 和 Linux 嵌入式系统上的 OpenGL。

如果系统对图形的硬件支持不足,则 Prism 使用软件渲染路径来处理图形。

与受支持的图形卡或 GPU 一起使用时,它可以提供更流畅的图形。如果系统不支持图形卡,则 Prism 默认使用软件渲染堆栈(以上两者之一)。

GWT(Glass Windowing Toolkit)

顾名思义,GWT 提供用于管理窗口、计时器、表面和事件队列的服务。GWT 将 JavaFX 平台连接到本机操作系统。

Quantum Toolkit

它是 Prism、Glass、Media Engine 和 Web Engine 的低级组件的抽象。它将 Prism 和 GWT 结合在一起,并使其可用于 JavaFX。

WebView

使用 JavaFX,您还可以将 HTML 内容嵌入到场景图中。WebView 是 JavaFX 的组件,用于处理此内容。它使用一种称为 Web Kit 的技术,这是一种内部开源 Web 浏览器引擎。该组件支持不同的 Web 技术,如 HTML5、CSS、JavaScript、DOM 和 SVG。

使用 WebView,您可以 −

  • 从本地或远程 URL 呈现 HTML 内容。
  • 支持历史记录并提供后退和前进导航。
  • 重新加载内容。
  • 将效果应用于 Web 组件。
  • 编辑 HTML 内容。
  • 执行 JavaScript 命令。
  • 处理事件。

通常,使用 WebView,您可以从 Java 控制 Web 内容。

媒体引擎

JavaFX 媒体引擎基于称为Streamer的开源引擎。该媒体引擎支持视频和音频内容的播放。

JavaFX 媒体引擎为以下文件格式提供音频支持 −

音频
  • MP3
  • WAV
  • AIFF
视频
  • FLV

javafx.scene.media 包含用于在 JavaFX 中提供媒体功能的类和接口。它以三个组件的形式提供,分别是 −

  • 媒体对象 − 这表示一个媒体文件

  • 媒体播放器 − 用于播放媒体内容。

  • 媒体视图 − 用于显示媒体。