您現在的位置是:首頁 > 遊戲
JavaFX教程——節點(Node)
控制站節點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節點可能具有負的X和Y座標。
每個節點都有自己的座標系。此座標系用於在父節點內定位子節點例項,或在JavaFX畫布上繪製時定位子節點例項。這意味著,作為另一個節點的子節點的節點既有自己的座標系,也有其父節點座標系中的位置(X,Y)。
下面是父節點座標系的示例,其中子節點位於父節點座標系中的(25,25)。子節點還具有自己的座標系,該座標系具有其(0,0),其中子節點位於父座標系中,即父節點座標系中的(25,25)。
JavaFX父節點和子節點座標系
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()方法執行同樣的操作。您必須檢查具體節點子類,以確定它是否可以包含項或子節點,以及如何新增和訪問它們。
推薦文章
- 又一刑偵劇未播先火,張譯、張頌文同臺飆戲,全員實力派看點十足
總的來說,《狂飆》這部刑偵劇還是很值得期待的,劇情精彩,並且陣容強大,看點十足,相信在播出之後會成為爆款,大家期待嗎...
- 2023年數碼好物盤點,8款產品推薦,都值得期待!
答:在我看來,2023年最值得期待的數碼產品無外乎智慧手機、膝上型電腦、投影儀、顯示器、遊戲裝置和VR裝備...
- 富士康老闆夫婦合體,46歲妻踩高跟與女星爭豔,70歲老公想拼4胎
不得不說,她的老公也是非常難得出現在公眾的視野當中,而這一次曾馨瑩的照片當中就有她老公的身影...