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− 该包提供类和接口来支持场景图。此外,它还提供了canvas、chart、control、effect、image、input、layout、media、paint、shape、text、transform、web等子包。有几个组件支持JavaFX这个丰富的API .
    下图显示了 JavaFX API 的架构。在这里您可以看到支持 JavaFX API 的组件。
    JavaFX API 的架构
  • 场景图

    在 JavaFX 中,GUI 应用程序使用场景图进行编码。场景图是构建 GUI 应用程序的起点。它包含称为节点的 (GUI) 应用程序原语。
    节点是一个视觉/图形对象,它可能包括 -
    • Geometrical (Graphical) objects -(2D 和 3D)如圆形、矩形、多边形等。
    • UI controls - 如按钮、复选框、选择框、文本区域等。
    • Containers -(布局窗格),例如边框窗格、网格窗格、流窗格等。
    • Media elements - 如音频、视频和图像对象。
    通常,节点集合构成场景图。所有这些节点都按层次顺序排列,如下所示。
    场景图
    场景图中的每个节点都有一个父节点,不包含任何父节点的节点称为 root node.
    同理,每个节点都有一个或多个子节点,没有子节点的节点称为 leaf node; 有孩子的节点被称为branch node.
    一个节点实例只能添加到场景图中一次。场景图的节点可以具有效果、不透明度、变换、事件处理程序、事件处理程序、应用程序特定状态。
  • 棱镜

    棱镜是一个 high performance hardware–accelerated graphical pipeline用于在 JavaFX 中渲染图形。它可以渲染 2-D 和 3-D 图形。
    为了渲染图形,棱镜使用 -
    • Windows XP 和 Vista 上的 DirectX 9。
    • Windows 7 上的 DirectX 11。
    • Mac 和 Linux 上的 OpenGL,嵌入式系统。
    如果系统对图形的硬件支持不足,那么 Prism 会使用软件渲染路径来处理图形。
    当与支持的图形卡或 GPU 一起使用时,它提供更流畅的图形。以防万一系统不支持显卡,那么 Prism 默认使用软件渲染堆栈(以上两者之一)。
  • GWT(玻璃窗工具包)

    顾名思义,GWT 提供管理 Windows、定时器、表面和事件队列的服务。GWT 将 JavaFX 平台连接到本机操作系统。
  • 量子工具包

    它是对 Prism、Glass、Media Engine 和 Web Engine 的低级组件的抽象。它将 Prism 和 GWT 联系在一起,并使它们可用于 JavaFX。
  • 网页视图

    使用 JavaFX,您还可以将 HTML 内容嵌入到场景图中。WebView 是 JavaFX 的组件,用于处理此内容。它使用一种叫做Web Kit,这是一个内部开源网络浏览器引擎。该组件支持不同的网络技术,如 HTML5、CSS、JavaScript、DOM 和 SVG。
    使用 WebView,您可以 -
    • 从本地或远程 URL 呈现 HTML 内容。
    • 支持历史记录并提供后退和前进导航。
    • 重新加载内容。
    • 将效果应用到 Web 组件。
    • 编辑 HTML 内容。
    • 执行 JavaScript 命令。
    • 处理事件。
    通常,使用 WebView,您可以从 Java 控制 Web 内容。
  • 媒体引擎

    JavaFX media engine 基于一个开源引擎,称为 Streamer. 该媒体引擎支持视频和音频内容的播放。
    JavaFX 媒体引擎支持以下文件格式的音频 -
    Audio
    • MP3
    • WAV
    • AIFF
    Video
    • FLV
    javafx.scene.media包含在 JavaFX 中提供媒体功能的类和接口。它以三个组件的形式提供,它们是 -
    • Media Object - 这代表一个媒体文件
    • Media Player − 播放媒体内容。
    • Media View − 显示媒体。