我尝试在堆栈窗格中创建一个包含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是我的内部类)
答案 0 :(得分:4)
将缩放的窗格放在一个组中。出于布局目的,StackPane(和其他布局窗格)将忽略节点上的缩放因子和其他变换,但组不会。
应用于组的任何变换,效果或状态都将应用于该组的所有子项。此类转换和效果不会包含在此组的布局范围中,但是如果直接在此组的子项上设置转换和效果,则这些转换和效果将包含在此组的布局范围中。
示例应用
JPanel