In JavaFX, if I have a scene with 2 VBox
elements and each VBox
has multiple Label
in it.
If I set the top VBox
to invisible, why does the bottom VBox
not move up the scene where the top VBox
was ?
The VBox
is invisible but I would expect the other objects to move into its place.
I am using FXML to load my controls.
Node.setVisible(boolean)
just toggles the visibility state of aNode
.To exclude a
Node
from its parents layout calculations you additionally have to set its managed state, by callingNode.setManaged(false)
.If you want the managed state to be updated automatically alongside the visibility, you can use a binding as @jewelsea pointed out:
node.managedProperty().bind(node.visibleProperty());
Since it's invisible, it wont move to the top. You have to remove it with something like:
Once you've removed the element you want invisible then, the other element should move to the top.
Instead of hiding the vbox you should remove it from the Children and if you want to show it again add the vbox again.