使Node
隐形不会将其从版面中删除。删除从父布局的节点由
- 从父或
- 节点的
managed
属性设置为false
的孩子列表中移除一个Node
完成。
实施例示出/使用managed
属性隐藏节点:
public static void toggleVisibility(Node node) {
boolean newValue = !node.isVisible();
node.setVisible(newValue);
// invisible nodes should not be taken into account for HBox layout
node.setManaged(newValue);
}
@Override
public void start(Stage primaryStage) {
Rectangle rect1 = new Rectangle(100, 100, Color.RED.deriveColor(0, 1, 1, 0.5));
Rectangle rect2 = new Rectangle(100, 100, Color.GREEN.deriveColor(0, 1, 1, 0.5));
Rectangle rect3 = new Rectangle(100, 100, Color.BLUE.deriveColor(0, 1, 1, 0.5));
HBox hbox = new HBox(rect1, rect2, rect3);
Scene scene = new Scene(hbox);
scene.setOnMouseClicked(evt -> {
toggleVisibility(rect2);
});
primaryStage.setScene(scene);
primaryStage.show();
}
如果你喜欢使用'调用setVisible()'代替添加和去除'VBox',只是结合'VBox'” s'managedProperty()'到它的'visibleProperty()'。 –