在Java FX中使用Group的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,Button。
上面的代码获取列表(按钮)中的最后一个节点。该代码对按钮也无效。
那我如何在组内的列表中找到一个节点并相应地定位它?
输出:
预期输出:
答案 0 :(得分:2)
似乎您要使用的容器(组)使用的是错误的容器。
应该如何相对于开始按钮显示四个Canvas节点? 您可能要使用AnchorPane或VBox。这完全取决于整体布局。
您可能要考虑使用SceneBuilder进行主要布局:https://gluonhq.com/products/scene-builder/
还要考虑一下Group对布局所做的工作(不多): https://github.com/javafxports/openjdk-jfx/blob/develop/modules/javafx.graphics/src/main/java/javafx/scene/Group.java
除非在新的Parent子类中实现layoutChildren,否则通常不调用setLayoutX / Y。
编辑: 要堆叠Canvas节点,可以将它们放置在StackPane中,但是我想我会使用AnchorPane,因为您可以轻松地将按钮锚定为与AnchorPane的底部边缘偏移。
答案 1 :(得分:1)
不要使用setLayout,布局管理器会使用它来移动子级(例如StackPane)。小组不是一个。请改用setTranslateX。