JavaFX 架構



JavaFX 是一個軟體平臺,允許開發者構建各種內容豐富的客戶端應用程式,這些應用程式可以在多個平臺上保持一致地執行。它是一個完整的 API,擁有豐富的類和介面集,可以構建具有豐富圖形的 GUI 應用程式。該 API 的一些重要包包括:

  • javafx.animation - 包含用於向 JavaFX 節點新增基於過渡的動畫(例如填充、淡入淡出、旋轉、縮放和平移)的類。

  • javafx.application - 包含一組負責 JavaFX 應用程式生命週期的類。

  • javafx.css - 包含用於向 JavaFX GUI 應用程式新增類似 CSS 的樣式的類。

  • javafx.event - 包含用於傳遞和處理 JavaFX 事件的類和介面。

  • javafx.geometry - 包含用於定義二維物件並在其上執行運算的類。

  • javafx.stage - 此包包含 JavaFX 應用程式的頂級容器類。

  • javafx.scene - 此包提供類和介面以支援場景圖。此外,它還提供子包,例如 canvas、chart、control、effect、image、input、layout、media、paint、shape、text、transform、web 等。許多元件支援 JavaFX 的這個豐富的 API。

在本章中,讓我們學習這個 JavaFX 平臺的架構設計及其元件之間的互連方式。

JavaFX 架構

下圖顯示了 JavaFX API 的架構。您可以看到支援 JavaFX API 的元件。

Architecture of JavaFX API

場景圖

在 JavaFX 中,GUI 應用程式使用場景圖進行編碼。場景圖是構建 GUI 應用程式的起點。它包含被稱為節點的 GUI 應用程式基元。

節點是一個可視/圖形物件,它可能包括:

  • 幾何(圖形)物件 - (二維和三維),例如圓形、矩形、多邊形等。

  • UI 控制元件 - 例如按鈕、複選框、選擇框、文字區域等。

  • 容器 - (佈局面板),例如邊框面板、網格面板、流面板等。

  • 媒體元素 - 例如音訊、影片和影像物件。

一般來說,節點的集合構成一個場景圖。所有這些節點都按層次結構排列,如下所示。

Scene Graph

場景圖中的每個節點只有一個父節點,不包含任何父節點的節點稱為根節點

同樣,每個節點都有一個或多個子節點,沒有子節點的節點稱為葉子節點;有子節點的節點稱為分支節點

節點例項只能新增到場景圖一次。場景圖的節點可以具有效果、不透明度、變換、事件處理程式、應用程式特定狀態。

Prism

Prism 是一個高效能硬體加速圖形管道,用於渲染 JavaFX 中的圖形。它可以渲染二維和三維圖形。

為了渲染圖形,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 技術,如 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 中媒體功能的類和介面。它以三個元件的形式提供,它們是:

  • 媒體物件 - 表示媒體檔案

  • 媒體播放器 - 用於播放媒體內容。

  • 媒體檢視 - 用於顯示媒體。

廣告