JavaFX中的Z-Order

Sca*_*ffe 16 java javafx z-order vbox

如何VBox在JavaFX中设置Z-order ?

Phi*_*Lho 33

JavaFX中的Z顺序实际上是场景图中的顺序,例如.在场景的内容序列中(然后在组,容器等的内容中).

所有节点还具有toFront()和toBack()函数以帮助更改此顺序.为了更好地控制,您必须从一个位置删除节点并在序列中将其插入更高或更低的位置.


小智 14

使用toFront()和toBack()函数确实可以影响z顺序,但请注意,这也会影响布局.例如,HBox和VBox也使用子序列来进行布局,将东西移到前面也会将它移动到[HV] Box的末尾.这可能不是你想要的.

我正在寻找一种方法来动画节点在所有其他动画节点之上,而不会弄乱布局.似乎没有办法做到这一点,因为z顺序和布局顺序都取自子顺序.

  • 哇.刚被这个咬了.在这个框架中非常粗糙(它充满了它们). (2认同)

Sla*_*law 6

尽管其他答案仍然正确,但JavaFX 9添加了一种无需修改子级列表即可操纵Z顺序的方法。这是通过Node.viewOrder属性完成的。

Javadoc:

Node在其父级中定义其渲染和拾取顺序。

此属性用于更改节点在其父级中的渲染和选取顺序,而无需重新排序父级children列表。例如,这可以用作实现透明度排序的更有效方法。为此,应用程序可以将viewOrder每个节点的值分配给该节点与查看器之间的计算距离。

父级将以children降序遍历viewOrder。这意味着身高较低的孩子viewOrder将在身高较高的孩子之前viewOrder。如果两个孩子相同viewOrder,则父级将按照它们在父级children列表中出现的顺序遍历它们。

但是,viewOrder不会更改Node其父级中的布局和焦点遍历顺序。父children级在进行布局或焦点遍历时始终按顺序遍历其列表。

默认值:

0.0

以来:

9