web-dev-qa-db-ja.com

JavaFX-setVisibleは要素を「隠さない」

JavaFXで、2つのVBox要素を持つシーンがあり、各VBoxに複数のLabelがある場合。
上のVBoxinvisibleに設定した場合、下のVBox上に移動しない上のVBoxのシーンはなぜですか

VBoxinvisibleですが、他のオブジェクトがその場所に移動することを期待しています。

FXMLを使用してコントロールをロードしています。

64
Gillardo

Node.setVisible(boolean)は、Nodeの可視状態を切り替えるだけです。

親レイアウト計算からNodeを除外するには、 Node.setManaged(false) を呼び出して、管理状態を追加で設定する必要があります。

管理状態を可視性と一緒に自動的に更新したい場合、@ jewelseaが指摘したようにバインディングを使用できます:node.managedProperty().bind(node.visibleProperty());

128
eckig

見えないので、一番上に移動しません。次のようなもので削除する必要があります。

// remove
vbox.getChildren().remove(...)

非表示にする要素を削除すると、他の要素が最上部に移動します。

7
breaktop

Vboxを非表示にする代わりに、remove Childrenからそれを表示し、再度表示したい場合はadd vboxを再度表示する必要があります。

2
Juce