managed
屬性僅確定Parent
是否使用它自己的佈局算法來確定子級的位置。它不會改變可視性。要刪除包含佔用空間的兒童,您還需要將visible
屬性設置爲false
。
以下示例演示了這一點。當點擊場景中的某個地方時,它將場景中的綠色矩形添加到場景中或從場景中刪除。
@Override
public void start(Stage primaryStage) {
Rectangle rect = new Rectangle(100, 100, Color.LIME);
VBox root = new VBox(new Rectangle(100, 100, Color.RED),
rect,
new Rectangle(100, 100, Color.BLUE));
Scene scene = new Scene(root, 200, 300);
scene.setOnMouseClicked(evt -> {
rect.setManaged(!rect.isManaged());
rect.setVisible(!rect.isVisible());
});
primaryStage.setScene(scene);
primaryStage.show();
}
注意,類似的效果也可以通過添加/移除的節點來實現/形成它的父:
scene.setOnMouseClicked(evt -> {
if (rect.getParent() == null) {
root.getChildren().add(1, rect);
} else {
root.getChildren().remove(rect);
}
});
AFAIK,管理= false意味着父不以本節點在安排時考慮在內。如果你想隱藏標籤,你可能應該將標籤的visible屬性設置爲false,並將其設置爲managed屬性(而不是VBox的managed屬性)。 – Itai