JavaFX - StackPane X,Y坐标

kin*_*ong 6 javafx stackpanel

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

有可能将它移到左上方的窗格吗?从中心计算所有尺寸要困难得多.

jew*_*sea 14

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

即使这是可能的,从您对如何使用StackPane的简要描述中,听起来您最好使用常规Pane,或者GroupAnchorPane来获得您认为想要的绝对定位实现.

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

  • 按照您希望绘制的顺序将节点放入子列表中。所有布局窗格都位于 2D 空间中,而不是 3D 空间中。所有窗格均按窗格子列表的顺序覆盖节点。JavaFX 使用 [painter 算法](https://en.wikipedia.org/wiki/Painter%27s_algorithm) 按此顺序渲染节点。此外,如果启用了深度排序和 3D,则可以设置 Z 坐标,但这并不常见。请参阅:[如何将一个形状重叠到另一个形状上](/sf/ask/3156257751/)。 (2认同)
  • 要将节点放置在您喜欢的位置,您可以使用标准窗格、AnchorPane 或组。这些节点允许对项目进行绝对定位,而不是执行相对定位的 StackPane,通常位于中心,但如果您在子节点上设置alignmee Ed by,也可以定位到侧面或角落。 (2认同)