日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点

發布時間:2023/12/3 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javafx查找子節點

在我仍在Swing中實現UI的時候,我曾經是MigLayout的忠實擁護者(“一個布局管理者來統治所有這些,對嗎Mikael?”)。 我真正喜歡的功能之一是當組件不可見時可以定義不同的行為。 MigLayout允許我保留現在不可見的組件所占用的空間,或使其仍可用于可見的組件。 那么如何在JavaFX中做到這一點呢?

即使答案很簡單,但通過查看API并不清楚。 JavaFX使用布局窗格(例如VBox,HBox,BorderPane,FlowPane或GridPane)來布置受管子節點。 此處的關鍵字為“托管”。 布局窗格僅考慮其布局算法中標記為托管的節點(默認為true)。 計算窗格的首選,最小,最大寬度的代碼也是如此。 此代碼也僅考慮受管節點。

讓我們來看一個例子。 我們創建一個帶有四個標簽的HBox。 最初看起來像這樣。

現在,我們將標簽2的可見性設置為false,并收到此布局。

為了重用以前由標簽占用的空間,我們現在將標簽2的“ managed”屬性設置為false。 如您所見,剩下的三個標簽現在填充了HBox的整個寬度,并且HBox的寬度已正確調整。

今天就這樣。 愿代碼與您同在!

PS:演示代碼如下:

package uk.co.senapt.desktop;import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage;/*** A little demo showing how the "visible" and "managed" property can be used* to make a node disappear in such a way that the layout pane / container can* reclaim the space previously occupied by the now invisible node.*/ public class VisibleManagedDemo extends Application {@Overridepublic void start(Stage primaryStage) {Label label1 = createLabel("Label 1");Label label2 = createLabel("Label 2");Label label3 = createLabel("Label 3");Label label4 = createLabel("Label 4");CheckBox visibleBox = new CheckBox("Visible");CheckBox managedBox = new CheckBox("Managed");visibleBox.setSelected(true);managedBox.setSelected(true);label2.visibleProperty().bind(visibleBox.selectedProperty());label2.managedProperty().bind(managedBox.selectedProperty());HBox hBox1 = new HBox(10, new Label("Label 2 settings:"), visibleBox, managedBox);HBox hBox2 = new HBox(10, label1, label2, label3, label4);hBox2.setStyle("-fx-background-color: lightgray; -fx-padding: 20");VBox vBox = new VBox(20, hBox1, hBox2);vBox.setFillWidth(false);vBox.setPadding(new Insets(20));primaryStage.setTitle("Visible / Managed Demo");primaryStage.setScene(new Scene(vBox));primaryStage.sizeToScene();primaryStage.centerOnScreen();primaryStage.show();}private Label createLabel(String text) {Label label = new Label(text);label.setStyle("-fx-background-color: orange; -fx-background-radius: 4; -fx-padding: 20;");label.setPrefSize(200, 200);return label;}public static void main(String[] args) {launch();} }

翻譯自: https://www.javacodegeeks.com/2018/06/javafx-layouts-ignore-invisible-nodes.html

javafx查找子節點

總結

以上是生活随笔為你收集整理的javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。