Javafx 简明教程

JavaFX - Architecture

JavaFX 是一个软件平台,允许开发者构建各种内容丰富的客户端应用程序,这些应用程序可以在多个平台上保持一致的运行。这是一整套 API,包含丰富的一组用于构建图形丰富的 GUI 应用程序的类和接口。此 API 的一些重要包包含 −

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

  2. javafx.application − 包含负责 JavaFX 应用程序生命周期的类集合。

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

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

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

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

  7. javafx.scene − 此包提供类和接口来支持场景图。此外,它还提供子包,例如 canvas、chart、control、effect、image、input、layout、media、paint、shape、text、transform、web 等。有几个组件支持 JavaFX 的这一丰富 API。

在本章中,让我们了解此 JavaFX 平台的架构设计以及它的各种组件是如何相互关联的。

JavaFX Architecture

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

architecture of javafx api

Scene Graph

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

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

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

  2. UI controls − 例如按钮、复选框、选项框、文本区域等。

  3. Containers −(布局窗格)例如边框窗格、网格窗格、流窗格等。

  4. Media elements − 例如音频、视频和图像对象。

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

scene graph

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

同样,每个节点都必须一个或多个子级,没有子级的节点叫做 leaf node ;有子级的节点叫做 branch node

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

Prism

Prism 是一个 high performance hardware–accelerated graphical pipeline ,用于在 JavaFX 中渲染图形。它能渲染 2-D 和 3-D 图形。

要渲染图形,Prism 会使用:

  1. 在 Windows XP 和 Vista 上的 DirectX 9

  2. 在 Windows 7 上的 DirectX 11

  3. 在 Mac 和 Linux、嵌入式系统上的 OpenGL

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

如果与受支持的显卡或 GPU 搭配使用,它会提供更流畅的图形。但如果系统不支持显卡,则 Prism 会默认使用软件渲染堆栈(上述两个之一)。

GWT (Glass Windowing Toolkit)

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

Quantum Toolkit

它是对 Prism、Glass、媒体引擎和 Web 引擎的底层组件的抽象。它将 Prism 和 GWT 联系在一起,让它们可用于 JavaFX。

WebView

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

使用 WebView,你可以:

  1. 渲染来自本地或远程 URL 的 HTML 内容。

  2. 支持历史记录并提供后退和前进导航功能。

  3. Reload the content.

  4. 将效果应用到 Web 组件。

  5. Edit the HTML content.

  6. Execute JavaScript commands.

  7. Handle events.

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

Media Engine

JavaFX media engine 基于一个名为 Streamer 的开源引擎。此媒体引擎支持视频和音频内容的播放。

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

Audio

MP3WAVAIFF

Video

FLV

javafx.scene.media 包含 JavaFX 中提供媒体功能的类和接口。它以三个组件的形式提供,如下所示:

  1. Media Object − 这表示一个媒体文件

  2. Media Player − 播放媒体内容。

  3. Media View − 显示媒体。