如何通过组JavaFX定位节点

如何通过组JavaFX定位节点,javafx,Javafx,我在Java FX中使用组的setLayout定位按钮时遇到一些问题。我的程序制作了一个带有开始按钮的游戏来运行它 我的更新代码: // Setting the layout of the button root.getChildren().get(root.getChildren().size() - 1).setTranslateX(SCENE_WIDTH / 2); root.getChildren().get(root.getChildren().size() -

我在Java FX中使用组的setLayout定位按钮时遇到一些问题。我的程序制作了一个带有开始按钮的游戏来运行它

我的更新代码:

    // Setting the layout of the button
    root.getChildren().get(root.getChildren().size() - 1).setTranslateX(SCENE_WIDTH / 2);
    root.getChildren().get(root.getChildren().size() - 1).setTranslateY(SCENE_HEIGHT / 10);
我的代码按以下顺序为组分配节点:Canvas1、Canvas2、Canvas3、Canvas4、按钮

上面的代码获取列表中的最后一个节点(按钮)。该代码对按钮也没有影响

那么,如何在组内的列表中获取节点并相应地定位它呢

输出:

预期产出:


不要使用setLayout,它由移动子项的布局管理器使用(如StackPane)。团体不是一个。请改用setTranslateX。

似乎您使用了错误的容器(组)来完成您想要完成的任务

相对于“开始”按钮,四个画布节点应该如何显示? 您可能需要使用AnchorPane或VBox。这完全取决于总体布局应该是什么样子

您可能想考虑使用SeNeBueDe:/P>做主要布局 考虑一下小组在布局方面的工作(不多):

除非在新的父子类中实现layoutChildren,否则通常不会调用setLayoutX/Y

编辑:
要堆叠画布节点,您可以将它们放置在StackPane中,但我想我会使用锚平面,因为您可以轻松地锚定按钮,使其偏离锚平面的底部边缘

SCENE\u HEIGHT/5
将节点放置在场景高度的1/5左右,该高度看起来是按钮当前所在的位置。也许你的意思是
4.0/5.0*场景高度
?另外,
layoutX
layoutY
值是节点左上角的位置。要正确“居中”节点,必须考虑其宽度和高度。你应该使用
translateX
translateY
,就像Sergey的回答所说的那样。我希望画布叠在一起,每个都添加一层图形。按钮将位于最上面。我使用Canvas是因为设置背景图像与Stackpane的许多参数相比很容易获得图像。我使用Canvas.getGraphicsContext2D().setFill(背景的ImagePattern);