JavaFXで、2つのVBox
要素を持つシーンがあり、各VBox
に複数のLabel
がある場合。
上のVBox
をinvisibleに設定した場合、下のVBox
上に移動しない上のVBox
のシーンはなぜですか
VBox
はinvisibleですが、他のオブジェクトがその場所に移動することを期待しています。
FXMLを使用してコントロールをロードしています。
Node.setVisible(boolean)
は、Node
の可視状態を切り替えるだけです。
親レイアウト計算からNode
を除外するには、 Node.setManaged(false)
を呼び出して、管理状態を追加で設定する必要があります。
管理状態を可視性と一緒に自動的に更新したい場合、@ jewelseaが指摘したようにバインディングを使用できます:node.managedProperty().bind(node.visibleProperty());
見えないので、一番上に移動しません。次のようなもので削除する必要があります。
// remove
vbox.getChildren().remove(...)
非表示にする要素を削除すると、他の要素が最上部に移動します。
Vboxを非表示にする代わりに、remove Childrenからそれを表示し、再度表示したい場合はadd vboxを再度表示する必要があります。