8

我使用 StackPanel 作为我的图形、面板等的容器。我发现,坐标 X,Y (0,0) 位于面板的中心。

是否可以将其移动到左上窗格?从中心计算所有尺寸要困难得多。

4

2 回答 2

18

您可以使用StackPane.setAlignment(node, position)方法将添加到 StackPane 的节点的布局设置为 Stackpane 内的某个位置:

Label topLeftLabel = new Label("Top Left");
StackPane stack = new StackPane();
stack.getChildren().add(topLeftLabel);

StackPane.setAlignment(topLeftLabel, Pos.TOP_LEFT);

尽管这是可能的,但从您对如何尝试使用 StackPane 的简要描述来看,听起来您最好使用常规PaneGroupAnchorPane来获得您似乎想要的那种绝对定位达到。

也可能考虑使用诸如SceneBuilder 之类的可视化工具。即使您最终没有使用它输出的 FXML,SceneBuilder 也应该让您更好地了解 JavaFX 布局机制的工作原理。SceneBuilder 将AnchorPane其用作其默认布局窗格,用于为元素提供绝对定位(这似乎是您想要实现的)。

于 2013-02-20T20:31:47.873 回答
0

在这种情况下,前面的答案当然是最好的,但知道您可以使用 Translation 在 StackPane 上移动节点也是明智的。

前任。

    Label topLeftLabel = new Label("Top Left");
    StackPane stack = new StackPane();
    stack.getChildren().add(topLeftLabel);
    
    topLeftLabel.setTranslateX(stack.getWidth()/2);
    topLeftLabel.setTranslateY(stack.getHeight()/2);

它会做同样的事情(但可能看起来更糟)

于 2021-08-25T12:52:32.640 回答