20

VBoxJavaFXでZ-orderを設定するにはどうすればよいですか?

4

3 に答える 3

38

JavaFXのZオーダーは、実際にはシーングラフのオーダーです。シーンのコンテンツシーケンス内(次に、グループ、コンテナなどのコンテンツ内)。

すべてのノードには、この順序の変更に役立つtoFront()関数とtoBack()関数もあります。より細かく制御するには、ノードを1つの場所から削除し、シーケンスの上位または下位に挿入する必要があります。

于 2010-06-07T09:17:04.030 に答える
18

toFront()およびtoBack()関数を使用すると、実際にz順序に影響を与えることができますが、これはレイアウトにも影響を与えることに注意してください。たとえば、HBoxとVBoxも子のシーケンスを使用してレイアウトを実行し、何かを前面に移動すると、[HV]Boxの最後にも移動します。これはあなたが探しているものではないかもしれません。

レイアウトを台無しにすることなく、アニメーション化されたノードを他のすべての上に置いてアニメーションを作成する方法を探していました。zオーダーとレイアウトオーダーは両方とも子オーダーから取得されるため、これを行う方法はないようです。

于 2013-02-27T09:21:22.247 に答える
17

他の答えはまだ正しいですが、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

于 2018-12-23T23:01:22.627 に答える