
- JavaFX 教程
- JavaFX - 首頁
- JavaFX - 概述
- JavaFX 安裝和架構
- JavaFX - 環境
- JavaFX - 使用 Netbeans 安裝
- JavaFX - 使用 Eclipse 安裝
- JavaFX - 使用 Visual Studio Code 安裝
- JavaFX - 架構
- JavaFX - 應用程式
- JavaFX 二維圖形
- JavaFX - 二維圖形
- JavaFX - 繪製直線
- JavaFX - 繪製矩形
- JavaFX - 繪製圓角矩形
- JavaFX - 繪製圓形
- JavaFX - 繪製橢圓
- JavaFX - 繪製多邊形
- JavaFX - 繪製折線
- JavaFX - 繪製三次貝塞爾曲線
- JavaFX - 繪製二次貝塞爾曲線
- JavaFX - 繪製弧形
- JavaFX - 繪製 SVG 路徑
- JavaFX 二維物件的屬性
- JavaFX - 描邊型別屬性
- JavaFX - 描邊寬度屬性
- JavaFX - 描邊填充屬性
- JavaFX - 描邊屬性
- JavaFX - 描邊線連線屬性
- JavaFX - 描邊斜接限制屬性
- JavaFX - 描邊線端點屬性
- JavaFX - 平滑屬性
- JavaFX 路徑物件
- JavaFX - 路徑物件
- JavaFX - LineTo 路徑物件
- JavaFX - HLineTo 路徑物件
- JavaFX - VLineTo 路徑物件
- JavaFX - QuadCurveTo 路徑物件
- JavaFX - CubicCurveTo 路徑物件
- JavaFX - ArcTo 路徑物件
- JavaFX 顏色和紋理
- JavaFX - 顏色
- JavaFX - 線性漸變圖案
- JavaFX - 徑向漸變圖案
- JavaFX 文字
- JavaFX - 文字
- JavaFX 效果
- JavaFX - 效果
- JavaFX - 顏色調整效果
- JavaFX - 顏色輸入效果
- JavaFX - 圖片輸入效果
- JavaFX - 混合效果
- JavaFX - 輝光效果
- JavaFX - 泛光效果
- JavaFX - 方框模糊效果
- JavaFX - 高斯模糊效果
- JavaFX - 運動模糊效果
- JavaFX - 反射效果
- JavaFX - 棕褐色調效果
- JavaFX - 陰影效果
- JavaFX - 投影陰影效果
- JavaFX - 內陰影效果
- JavaFX - 照明效果
- JavaFX - Light.Distant 效果
- JavaFX - Light.Spot 效果
- JavaFX - Point.Spot 效果
- JavaFX - 位移對映
- JavaFX - 透視變換
- JavaFX 動畫
- JavaFX - 動畫
- JavaFX - 旋轉轉換
- JavaFX - 縮放轉換
- JavaFX - 平移轉換
- JavaFX - 淡入淡出轉換
- JavaFX - 填充轉換
- JavaFX - 描邊轉換
- JavaFX - 順序轉換
- JavaFX - 並行轉換
- JavaFX - 暫停轉換
- JavaFX - 路徑轉換
- JavaFX 圖片
- JavaFX - 圖片
- JavaFX 三維圖形
- JavaFX - 三維圖形
- JavaFX - 建立立方體
- JavaFX - 建立圓柱體
- JavaFX - 建立球體
- JavaFX 事件處理
- JavaFX 事件處理
- JavaFX - 使用便捷方法
- JavaFX - 事件過濾器
- JavaFX - 事件處理器
- JavaFX UI 控制元件
- JavaFX - UI 控制元件
- JavaFX - 列表檢視
- JavaFX - 手風琴
- JavaFX - 按鈕欄
- JavaFX - 選擇框
- JavaFX - HTML 編輯器
- JavaFX - 選單欄
- JavaFX - 分頁
- JavaFX - 進度指示器
- JavaFX - 滾動窗格
- JavaFX - 分隔符
- JavaFX - 滑塊
- JavaFX - 微調器
- JavaFX - 分割窗格
- JavaFX - 表格檢視
- JavaFX - 標籤頁窗格
- JavaFX - 工具欄
- JavaFX - 樹檢視
- JavaFX - 標籤
- JavaFX - 複選框
- JavaFX - 單選按鈕
- JavaFX - 文字欄位
- JavaFX - 密碼欄位
- JavaFX - 檔案選擇器
- JavaFX - 超連結
- JavaFX - 工具提示
- JavaFX - 警報
- JavaFX - 日期選擇器
- JavaFX - 文字區域
- JavaFX 圖表
- JavaFX - 圖表
- JavaFX - 建立餅圖
- JavaFX - 建立折線圖
- JavaFX - 建立面積圖
- JavaFX - 建立柱狀圖
- JavaFX - 建立氣泡圖
- JavaFX - 建立散點圖
- JavaFX - 建立堆疊面積圖
- JavaFX - 建立堆疊柱狀圖
- JavaFX 佈局面板
- JavaFX - 佈局面板
- JavaFX - HBox 佈局
- JavaFX - VBox 佈局
- JavaFX - BorderPane 佈局
- JavaFX - StackPane 佈局
- JavaFX - TextFlow 佈局
- JavaFX - AnchorPane 佈局
- JavaFX - TilePane 佈局
- JavaFX - GridPane 佈局
- JavaFX - FlowPane 佈局
- JavaFX CSS
- JavaFX - CSS
- JavaFX 多媒體
- JavaFX - 處理多媒體
- JavaFX - 播放影片
- JavaFX 有用資源
- JavaFX - 快速指南
- JavaFX - 有用資源
- JavaFX - 討論
JavaFX 事件處理
在 JavaFX 中,我們可以開發 GUI 應用程式、Web 應用程式和圖形應用程式。在這些應用程式中,每當使用者與應用程式(節點)互動時,就會發生一個事件。
例如,單擊按鈕、移動滑鼠、透過鍵盤輸入字元、從列表中選擇專案、滾動頁面都是導致事件發生的活動。
事件型別
事件可以大致分為以下兩類:
前臺事件 - 那些需要使用者直接互動的事件。它們是由於使用者與圖形使用者介面中的圖形元件互動而生成的。例如,單擊按鈕、移動滑鼠、透過鍵盤輸入字元、從列表中選擇專案、滾動頁面等。
後臺事件 - 那些不需要終端使用者互動的事件稱為後臺事件。作業系統中斷、硬體或軟體故障、計時器到期、操作完成都是後臺事件的示例。
JavaFX 中的事件
JavaFX 提供了對各種事件進行處理的支援。名為 Event 的類(位於 javafx.event 包中)是事件的基類。
其任何子類的例項都是一個事件。JavaFX 提供了各種各樣的事件。其中一些列在下面。
滑鼠事件 - 當單擊滑鼠時發生的輸入事件。它由名為 MouseEvent 的類表示。它包括滑鼠單擊、滑鼠按下、滑鼠釋放、滑鼠移動、滑鼠進入目標、滑鼠退出目標等操作。
鍵盤事件 - 指示在節點上發生的擊鍵的輸入事件。它由名為 KeyEvent 的類表示。此事件包括按鍵按下、按鍵釋放和按鍵輸入等操作。
拖動事件 - 當拖動滑鼠時發生的輸入事件。它由名為 DragEvent 的類表示。它包括拖動進入、拖動放下、拖動進入目標、拖動退出目標、拖動經過等操作。
視窗事件 - 與視窗顯示/隱藏操作相關的事件。它由名為 WindowEvent 的類表示。它包括視窗隱藏、視窗顯示、視窗隱藏、視窗顯示等操作。
事件處理
事件處理是控制事件並決定如果事件發生應該發生什麼的機制。此機制包含稱為事件處理程式的程式碼,該程式碼在事件發生時執行。
JavaFX 提供了處理程式和過濾器來處理事件。在 JavaFX 中,每個事件都有:
目標 - 事件發生的節點。目標可以是視窗、場景和節點。
源 - 生成事件的源將是事件的源。在上例中,滑鼠是事件的源。
型別 - 發生的事件型別;對於滑鼠事件而言,滑鼠按下、滑鼠釋放是事件型別。
假設我們有一個應用程式,其中包含一個圓形以及停止和播放按鈕(使用組物件插入):

如果單擊播放按鈕,則源將是滑鼠,目標節點將是播放按鈕,生成的事件型別是滑鼠單擊。
JavaFX 中事件處理的階段
每當生成事件時,JavaFX 都會經歷以下階段。
路由構建
每當生成事件時,事件的預設/初始路由都透過構建 事件分發鏈 來確定。它是從舞臺到源節點的路徑。
以下是當我們在上例中單擊播放按鈕時生成的事件的分發鏈。

事件捕獲階段
構建事件分發鏈後,應用程式的根節點將分派事件。此事件將傳播到分發鏈中的所有節點(從上到下)。如果這些節點中的任何一個為生成的事件註冊了過濾器,則將執行該過濾器。如果分發鏈中的任何節點都沒有為生成的事件註冊過濾器,則它將傳遞到目標節點,最後目標節點處理事件。
事件冒泡階段
在事件冒泡階段,事件從目標節點傳播到舞臺節點(從下到上)。如果事件分發鏈中的任何節點為生成的事件註冊了處理程式,則將執行該處理程式。如果這些節點都沒有處理程式來處理事件,則事件將到達根節點,最後過程將完成。
事件處理程式和過濾器
事件過濾器和處理程式包含用於處理事件的應用程式邏輯。一個節點可以註冊多個處理程式/過濾器。對於父子節點,可以為父節點提供一個通用的過濾器/處理程式,該過濾器/處理程式將作為所有子節點的預設值進行處理。
如上所述,在事件發生期間,處理器是一個被執行的過濾器,並且在事件冒泡階段,一個處理程式被執行。所有處理程式和過濾器都實現了包 **javafx.event** 中的介面 **EventHandler**。