我使用以下代码:
<VBox fx:id="v" xmlns:fx="http://javafx.com/fxml" managed="false" prefWidth="100" prefHeight="100">
<Label text="label"/>
</VBox>
文本“标签”仍然存在,如何使VBox消失并删除其空间,如果我使用Parent #remove,我无法恢复它
答案 0 :(得分:1)
managed
属性仅确定Parent
是否使用自己的布局算法来确定孩子的位置。它不会改变可见性。要删除包含占用空间的子项,您还需要将visible
属性设置为false
。
以下示例演示了这一点。它&#34;添加/删除&#34;点击场景中某处的绿色矩形到场景。
@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);
}
});