Node.setVisible(boolean)
просто переключает состояние видимости Node
.
Чтобы исключить Node
из расчётов макета родителя, вы также должны установить его управляемое состояние, вызвав Node.setManaged(false)
.
Если вы хотите, чтобы управляемое состояние автоматически обновлялось вместе с видимостью, вы можете использовать привязку, как указано @jewelsea: node.managedProperty().bind(node.visibleProperty());