在堆栈窗格

时间:2018-04-23 18:57:21

标签: java javafx javafx-8

我尝试在堆栈窗格中创建一个包含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是我的内部类)

这就是我得到的:enter image description here

1 个答案:

答案 0 :(得分:4)

将缩放的窗格放在一个组中。出于布局目的,StackPane(和其他布局窗格)将忽略节点上的缩放因子和其他变换,但组不会。

来自Group javadoc

  

应用于组的任何变换,效果或状态都将应用于该组的所有子项。此类转换和效果不会包含在此组的布局范围中,但是如果直接在此组的子项上设置转换和效果,则这些转换和效果将包含在此组的布局范围中。

示例应用

sample

JPanel