【发布时间】:2018-04-23 18:57:21
【问题描述】:
我尝试在堆栈窗格中创建一个包含 2 个窗格的应用程序。 一个窗格是主窗格并居中,第二个窗格较小并停靠在舞台的左下角。
问题是我尝试过使用“setAlignment”,但它似乎不起作用(尽管按钮已对齐)。 小窗格始终居中。
有什么问题,我该如何解决? 我想也许我无法对齐窗格,那么我该如何克服呢?
Pane pane = new Pane();
for (SerialPoint sp : points) {
Circle circle = new Circle(sp.getX(), sp.getY(), 6, Color.GREEN);
pane.getChildren().add(circle);
}
Pane smallPane = new Pane();
smallPane.setScaleX(0.25);
smallPane.setScaleY(0.25);
smallPane.setStyle("-fx-border-color: black;");
for (SerialPoint sp : points) {
Circle circle = new Circle(sp.getX(), sp.getY(), 6, Color.RED);
smallPane.getChildren().add(circle);
}
Button startBtn = new Button("Start");
StackPane stackPane = new StackPane(pane, smallPane, startBtn);
StackPane.setAlignment(smallPane, Pos.BOTTOM_LEFT);
StackPane.setAlignment(startBtn, Pos.TOP_RIGHT);
StackPane.setMargin(startBtn, new Insets(5));
Scene scene = new Scene(stackPane);
(SerialPoint 是我的内部类)
【问题讨论】:
-
不要使用
StackPane。使用BorderPane或VBoxes和HBoxes。 -
AnchorPane或许也能满足您的需求。 -
如果你的
Scene布局是静态的,我建议你使用SceneBuilder。 -
我认为正在发生的事情是该窗格只是在缩放之前填充了整个堆栈窗格。转换在布局之后应用,因此小窗格填充整个堆栈窗格,然后缩放 25%,并围绕其中心应用缩放。因此,缩放的窗格显示为居中。尝试将小窗格包装在
Group中,将组添加到堆栈窗格而不是直接添加小窗格,并在组上设置对齐方式。 (如果您发布我们可以测试的实际minimal reproducible example,我可以在答案中准确说明。)