使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()'。 –