JavaFX - setVisible不会"隐藏"该元素

Gil*_*rdo 72 java javafx javafx-2 fxml javafx-8

在JavaFX中,如果我有一个包含2个VBox元素的场景,并且每个元素VBox都有多个元素Label.
如果我将顶部设置VBox隐形,为什么底部VBox 不会移动到顶部的场景VBox

VBox看不见的,但我希望其他对象移动到它的位置.

我正在使用FXML来加载我的控件.

eck*_*kig 141

Node.setVisible(boolean)只是切换a的可见性状态Node.

要从Node父项布局计算中排除a ,您还必须通过调用来设置其托管状态Node.setManaged(false).

如果您希望托管状态与可见性一起自动更新,您可以使用@jewelsea指出的绑定: node.managedProperty().bind(node.visibleProperty());

  • [绑定也有效](http://stackoverflow.com/questions/19666982/is-there-a-way-to-implement-a-property-like-rendered-on-javafx),例如`node.managedProperty ().bind(node.visibleProperty());` (43认同)

bre*_*top 7

由于它是不可见的,它不会移到顶部.您必须使用以下内容删除它:

// remove
vbox.getChildren().remove(...)
Run Code Online (Sandbox Code Playgroud)

一旦你删除了你想要隐藏的元素,那么另一个元素应该移到顶部.

  • AFAIK,操纵场景图比将可见设置为false更昂贵. (3认同)

小智 5

尝试将 setVisible 和 ManagedProperty 一起使用。这是一个例子:

myHBox.setVisible(false);
myHBox.managedProperty().bind(myHBox.visibleProperty());
Run Code Online (Sandbox Code Playgroud)

  • 现在更清楚了! (3认同)