题
我如何为z订单设置 VBox
在Javafx?
解决方案
Javafx中的Z级实际上是场景图中的顺序,例如。在场景的内容序列中(然后在组,容器等的内容中)。
所有节点都具有tofront()和toback()函数,以帮助更改此顺序。对于更精细的控制,您必须从一个地方删除节点,并在序列中插入更高或更低的节点。
其他提示
使用tofront()和toback()函数,您确实可以影响Z阶,但请注意,这也会影响布局。例如,Hbox和Vbox还使用儿童序列进行布局,并将某物移至前面也将将其移至[HV]框的末端。这可能不是您想要的。
我一直在寻找一种动画节点在所有其他方法上的动画节点,而不会弄乱布局的方法。似乎没有办法这样做,因为Z订单和布局顺序均来自子订单。
尽管其他答案仍然正确,但Javafx 9添加了一种操纵Z订单的方法,而无需修改孩子列表。这是通过 Node.viewOrder
财产。
Javadoc:
定义此的渲染和选择顺序
Node
在其父母内。此属性用于更改父母内节点的渲染和选择顺序,而无需重新排序父
children
列表。例如,这可以用作实现透明分类的更有效的方法。为此,应用程序可以分配viewOrder
每个节点与该节点与查看器之间的计算距离的值。父母将穿越它的
children
减少viewOrder
命令。这意味着一个较低的孩子viewOrder
将在一个更高的孩子面前viewOrder
. 。如果两个孩子有相同的viewOrder
, ,父母将按照他们出现在父母的顺序中children
列表。然而,
viewOrder
不会更改布局和重点遍历此的顺序Node
在其父母内。父母总是穿越它的children
列出布局或焦点遍历时列出。默认值:
0.0
自从:
9