JavaFX如何将形状重叠到另一个上

Ish*_*ava 1 java javafx

我想在圆圈上创建一条线.

我尝试过的事情:

  • 我将圆圈添加到StackPane,然后StackPane和一行到我发送到场景构造函数的组得到了一些不希望的结果,比如stackpane没有完全在舞台上传播

  • 在圆圈将其自动置于其上方之后添加该行但我需要对其进行更多控制.

例如,我有10个形状,我想要声明它们然后决定什么是什么,我不想担心按顺序添加它们

jew*_*sea 7

JavaFX如何绘制

JavaFX的使用画家算法,画一的家长,从第一个节点,以持续,所以,最后的节点将被涂在第一节点.

这是在每个脉冲而不是立即模式下保留模式完成的.因此,在您放弃对JavaFX图形系统的逻辑控制之前,不会绘制项目.这意味着您可以将项目添加到场景图形中,然后根据需要在场景图形中重新排序或移动它们,然后再绘制它们.

JavaFX中的3D绘画也可以使用Z缓冲,但这个答案仅涉及具有相同z坐标值的元素的2D绘制,而没有Z缓冲.

如何设置节点的绘制顺序

通过将节点添加到父级的子级列表,可以将节点放在" 父级"或" 父级" 窗格中.将按照将它们添加到子列表的顺序绘制节点.

如果您希望使用CSS,则窗格很好,否则组通常会这样做.Pane还具有可调整范围,而一组则没有.出于这些原因,我通常更喜欢使用Pane而不是Group.

要更改子项的绘制顺序,可以在子项列表中的位置移动节点.

例如,以下代码将更改父窗格子项列表中第一个和第五个项目的绘制顺序:

Collections.swap(parentPane.getChildren(), 0, 4)
Run Code Online (Sandbox Code Playgroud)

此外,节点toFronttoBack后方便的方法来一个节点移动到该节点的父节点的子列表的前面或后面.

有关布局窗格使用的建议

不要使用StackPane等布局窗格来保存您希望显式定位的节点.管理布局窗格(如StackPane)旨在根据布局窗格的内部算法自动为您处理节点布局.例如,默认情况下,添加到StackPane的每个节点都将在StackPane的中间居中.

有关