您現在的位置是:首頁 > 遊戲

JavaFX教程——節點(Node)

由 神奇空間站 發表于 遊戲2022-04-13
簡介javafx node的一個名為Parent的特殊子類用於對可以有子節點的節點例項進行建模

控制站節點node的作用是什麼

JavaFX節點類JavaFX。scene。Node是新增到JavaFX場景圖的所有元件的基類(超類)。JavaFX節點類是抽象的,因此您將只向場景圖中新增節點類的子類。場景圖中的所有JavaFX節點例項共享一組由JavaFX節點類定義的公共屬性。這些常見屬性將在本JavaFX節點教程中介紹。

JavaFX節點基礎

每個JavaFX節點(子類)例項只能新增到JavaFX場景圖一次。換句話說,每個節點例項只能出現在場景圖中的一個位置。如果多次嘗試將同一節點例項或節點子類例項新增到場景圖中,JavaFX將引發異常!

JavaFX節點有時可以有子項,也稱為孩子 。給定的節點例項是否可以有孩子取決於具體的節點子類。javafx node的一個名為Parent的特殊子類用於對可以有子節點的節點例項進行建模。因此,可以有子的節點例項通常是Parent類的子,而不是直接的節點類。

JavaFX舞臺和JavaFX場景類不是JavaFX節點類的子類。雖然這兩個類用於顯示JavaFX場景圖,但只有新增到JavaFX場景例項的節點例項才被視為JavaFX場景圖的一部分。

將節點例項附加到場景圖後,僅允許JavaFX應用程式執行緒(管理JavaFX場景圖的執行緒)修改節點例項。

JavaFX節點屬性

JavaFX節點類以及節點的所有子類具有以下公共屬性:

笛卡爾座標系

由以下內容分隔的邊界框:

佈局邊界

區域性邊界

父物件中的邊界

佈局X座標

佈局Y座標

首選高度

首選寬度

最小高度

最小寬度

最大高度

最大寬度

使用者資料

專案(子節點)

這些屬性將在後續章節中介紹。

JavaFX節點座標系

每個JavaFX節點都有自己的笛卡爾座標系。與常規笛卡爾座標系的唯一區別在於Y軸是反向的。也就是說,座標系的原點位於座標系的左上角。隨著Y值的增加,該點將從座標系的頂部向下移動。Y軸的反轉在2D圖形座標系中是正常的。

JavaFX節點座標系

JavaFX教程——節點(Node)

JavaFX節點可能具有負的X和Y座標。

每個節點都有自己的座標系。此座標系用於在父節點內定位子節點例項,或在JavaFX畫布上繪製時定位子節點例項。這意味著,作為另一個節點的子節點的節點既有自己的座標系,也有其父節點座標系中的位置(X,Y)。

下面是父節點座標系的示例,其中子節點位於父節點座標系中的(25,25)。子節點還具有自己的座標系,該座標系具有其(0,0),其中子節點位於父座標系中,即父節點座標系中的(25,25)。

JavaFX父節點和子節點座標系

JavaFX教程——節點(Node)

JavaFX節點邊界框

JavaFX節點有一個邊界框。JavaFX節點的邊界框是圍繞節點形狀的邏輯框。完整節點位於邊界框內,即以圖形方式。換句話說,節點的所有角點和邊都包含在邊界框中,並且節點周圍沒有額外的空間,除非透過應用於節點的效果、填充或其他方式新增。

實際上,節點有3個邊界框:

可以從具有相同名稱的相應屬性中讀取這些邊界框標註中的每一個,即名為layoutBounds、boundsInLocal和boundsInParent的屬性。

父節點(Parent)使用boundsInParent邊界框來佈局其子節點。父節點需要知道總空間,包括節點的所有效果、剪輯和變換,以便能夠為其分配空間。

layoutX和layoutY

JavaFX節點物件的layoutX和layoutY屬性包含其父節點內部節點的X和Y。換句話說,layoutX和layoutY是相對於父節點的0,0(origo)的偏移量。

並非所有佈局類都會考慮節點的佈局X和佈局Y。這取決於父節點的確切佈局演算法。

node

setLayoutX

100

);

node

setLayoutY

200

);

首選寬度和高度

JavaFX節點物件的首選寬度和高度屬性指定給定節點物件(通常為節點的子)的首選寬度和高度。並非所有父節點類都會遵守子節點的preferredWidth和preferredHeight。它取決於具體的父節點實現。

node

setPrefWidth

100

);

node

setPrefHeight

100

);

最小寬度和高度

JavaFX節點物件的最小寬度和高度屬性指定節點希望(或需要)顯示自身的最小寬度和高度。並非所有父節點類都可以遵守這些屬性。它取決於具體的父節點實現。

node。setMinWidth(50);

node。setMinHeight(50);

最大寬度和高度

JavaFX節點物件的最大寬度和高度屬性指定節點希望(或需要)顯示自身的最大寬度和高度。並非所有父節點類都可以遵守這些屬性。它取決於具體的父節點實現。

node。setMaxWidth(50);

node。setMaxHeight(50);

使用者資料

可以使用setUserData()方法在JavaFX節點上設定使用者資料。此方法接受您自己選擇的任何Java物件。透過這種方式,您可以將業務物件等附加到JavaFX節點例項。以下是將一些使用者資料附加到節點例項的示例:

node。setUserData(new MyObject(“Hey - some data”));

專案或子節點

許多JavaFX節點子類可以包含項或子節點。如何準確地新增和訪問這些子節點取決於具體的節點子類。有些類有一個getItems()方法返回專案列表。其他類也有一個getChildren()方法執行同樣的操作。您必須檢查具體節點子類,以確定它是否可以包含項或子節點,以及如何新增和訪問它們。

JavaFX教程——節點(Node)

推薦文章