VBox
JavaFXでZ-orderを設定するにはどうすればよいですか?
3 に答える
JavaFXのZオーダーは、実際にはシーングラフのオーダーです。シーンのコンテンツシーケンス内(次に、グループ、コンテナなどのコンテンツ内)。
すべてのノードには、この順序の変更に役立つtoFront()関数とtoBack()関数もあります。より細かく制御するには、ノードを1つの場所から削除し、シーケンスの上位または下位に挿入する必要があります。
toFront()およびtoBack()関数を使用すると、実際にz順序に影響を与えることができますが、これはレイアウトにも影響を与えることに注意してください。たとえば、HBoxとVBoxも子のシーケンスを使用してレイアウトを実行し、何かを前面に移動すると、[HV]Boxの最後にも移動します。これはあなたが探しているものではないかもしれません。
レイアウトを台無しにすることなく、アニメーション化されたノードを他のすべての上に置いてアニメーションを作成する方法を探していました。zオーダーとレイアウトオーダーは両方とも子オーダーから取得されるため、これを行う方法はないようです。
他の答えはまだ正しいですが、JavaFX 9は、子リストを変更せずにzオーダーを操作する方法を追加しました。これはNode.viewOrder
プロパティで行われます。
Javadoc:
Node
親内でのこれのレンダリングとピッキングの順序を定義します。
children
このプロパティは、親のリストを並べ替えることなく、親内のノードのレンダリングと選択の順序を変更するために使用されます。たとえば、これは透明度の並べ替えを実装するためのより効率的な方法として使用できます。これを行うために、アプリケーションはviewOrder
、各ノードの値を、そのノードとビューアの間の計算された距離に割り当てることができます。親は
children
降順でトラバースしviewOrder
ます。これは、低いviewOrder
子が高い子の前にいることを意味しviewOrder
ます。2つの子が同じviewOrder
である場合、親は、親のchildren
リストに表示されている順序で子をトラバースします。ただし、親内
viewOrder
でのレイアウトとフォーカストラバーサル順序は変更されません。Node
親は、children
レイアウトまたはフォーカストラバーサルを実行するときに、常にリストを順番にトラバースします。デフォルト値:
0.0
以来:
9
JavaFX CSSリファレンスガイドに記載されているように、このプロパティはCSSからプロパティを介して設定できることに注意してください-fx-view-order
。