我使用 StackPanel 作为我的图形、面板等的容器。我发现,坐标 X,Y (0,0) 位于面板的中心。
是否可以将其移动到左上窗格?从中心计算所有尺寸要困难得多。
我使用 StackPanel 作为我的图形、面板等的容器。我发现,坐标 X,Y (0,0) 位于面板的中心。
是否可以将其移动到左上窗格?从中心计算所有尺寸要困难得多。
您可以使用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
其用作其默认布局窗格,用于为元素提供绝对定位(这似乎是您想要实现的)。
在这种情况下,前面的答案当然是最好的,但知道您可以使用 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);
它会做同样的事情(但可能看起来更糟)