📜  JavaFX-体系结构

📅  最后修改于: 2020-11-14 07:05:37             🧑  作者: Mango


JavaFX提供了具有丰富类和接口的完整API,以构建具有丰富图形的GUI应用程序。该API的重要软件包是-

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

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

  • javafx.css-包含用于将CSS样式添加到JavaFX GUI应用程序的类。

  • 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控件-例如按钮,复选框,选择框,文本区域等。

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

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

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

场景图

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

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

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

棱镜

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

渲染图形,棱镜使用-

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

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

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

GWT(玻璃开窗工具包)

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

量子工具包

它是对Prism,Glass,Media Engine和Web Engine的低级组件的抽象。它将Prism和GWT连接在一起,并使它们可用于JavaFX。

网页浏览

使用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媒体引擎为以下文件格式提供音频支持-

Audio
  • MP3
  • WAV
  • AIFF
Video
  • FLV

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

  • 媒体对象-这代表一个媒体文件

  • Media Player-播放媒体内容。

  • 媒体视图-显示媒体。