如何通过组JavaFX定位节点

问题描述 投票:-1回答:2

我在使用Java FX中的setLayout of Group定位我的按钮时遇到了一些麻烦。我的程序使用开始按钮来运行它。

我更新的代码:

    // 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。

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

那么如何在Group内的List中获取一个Node并相应地定位它?

输出:

enter image description here

预期产出:

enter image description here

javafx
2个回答
2
投票

您似乎正在使用错误的容器(Group)来完成您想要完成的任务。

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

您可能需要考虑使用Scene Builder进行主要布局:qazxsw poi

还要考虑一下Group为布局做了什么(不多):https://gluonhq.com/products/scene-builder/

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

编辑:要叠加Canvas节点,您可以将它们放在StackPane中,但我想我会使用AnchorPane,因为您可以轻松地将按钮锚定到AnchorPane的底部边缘。


1
投票

不要使用setLayout,布局管理器使用它来移动子节点(如StackPane)。集团不是一个。请改用setTranslateX。

© www.soinside.com 2019 - 2024. All rights reserved.