我正在使用StackPane作为我的图形、面板等的容器。我发现坐标X,Y(0,0)位于我的面板中心。
有没有可能将它移动到Pane的左上角? 从中心计算所有尺寸要困难得多。
有没有可能将它移动到Pane的左上角? 从中心计算所有尺寸要困难得多。
您可以使用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 的方式来看,你最好使用一个普通的 Pane,或者一个 Group 或者一个 AnchorPane 来实现你想要达到的绝对定位。
你也可以考虑使用可视化工具,例如SceneBuilder。即使你最终不使用它输出的 FXML,SceneBuilder 也应该能让你更好地了解 JavaFX 布局机制的工作原理。SceneBuilder 使用 AnchorPane
作为其默认布局面板来为元素提供绝对定位(这似乎是你想要实现的功能)。
在这种情况下,前面的答案当然是最好的选择,但也明智知道你可以使用平移来移动 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);
它会做同样的事情(但可能看起来更糟)
stackPane.setAlignment(Pos.TOP_LEFT);
,那么标签的相对位置将基于左上角计算为 (0, 0)。 - Nick Dong