多读书多实践,勤思考善领悟

JavaFX架构

本文于1810天之前发表,文中内容可能已经过时。

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的组件。

Scene Graph(场景图)

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

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

  • 几何(图形)对象 - (2D和3D),如圆形,矩形,多边形等。
  • UI控件 - 例如Button,Checkbox,Choice框,Text Area等。
  • 容器 - (布局窗格),例如Border Pane,Grid Pane,Flow Pane等。
  • 媒体元素 - 例如音频,视频和图像对象。

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

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

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

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

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提供管理Windows,计时器,曲面和事件队列的服务。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内容。

Media Engine(媒体引擎)

JavaFX的媒体引擎是基于已知为一种开源发动机流光。该媒体引擎支持视频和音频内容的回放。

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

音频 MP3WAVAIFF
视频 FLV

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

  • 媒体对象 - 这表示媒体文件
  • 媒体播放器 - 播放媒体内容。
  • 媒体视图 - 显示媒体。