Phi*_*Lho 33
JavaFX中的Z顺序实际上是场景图中的顺序,例如.在场景的内容序列中(然后在组,容器等的内容中).
所有节点还具有toFront()和toBack()函数以帮助更改此顺序.为了更好地控制,您必须从一个位置删除节点并在序列中将其插入更高或更低的位置.
小智 14
使用toFront()和toBack()函数确实可以影响z顺序,但请注意,这也会影响布局.例如,HBox和VBox也使用子序列来进行布局,将东西移到前面也会将它移动到[HV] Box的末尾.这可能不是你想要的.
我正在寻找一种方法来动画节点在所有其他动画节点之上,而不会弄乱布局.似乎没有办法做到这一点,因为z顺序和布局顺序都取自子顺序.
尽管其他答案仍然正确,但JavaFX 9添加了一种无需修改子级列表即可操纵Z顺序的方法。这是通过Node.viewOrder属性完成的。
Javadoc:
Node在其父级中定义其渲染和拾取顺序。此属性用于更改节点在其父级中的渲染和选取顺序,而无需重新排序父级
children列表。例如,这可以用作实现透明度排序的更有效方法。为此,应用程序可以将viewOrder每个节点的值分配给该节点与查看器之间的计算距离。父级将以
children降序遍历viewOrder。这意味着身高较低的孩子viewOrder将在身高较高的孩子之前viewOrder。如果两个孩子相同viewOrder,则父级将按照它们在父级children列表中出现的顺序遍历它们。但是,
viewOrder不会更改Node其父级中的布局和焦点遍历顺序。父children级在进行布局或焦点遍历时始终按顺序遍历其列表。默认值:
0.0以来:
9