如果我尝试在StackPane中对齐Path,那么它会根据其内部结构而不是使用布局边界进行对齐。有没有改变这个?我尝试了各种组合,包括/不包括组合包装器,VBox,HBox,autosizeChildren属性等。
例如,我希望该行插入(50,50),但它显示在(0,0)
@Override
public void start(Stage primaryStage) {
MoveTo moveTo = new MoveTo();
moveTo.setX(50);
moveTo.setY(50);
LineTo lineTo = new LineTo();
lineTo.setX(100);
lineTo.setY(100);
Path path = new Path(moveTo, lineTo);
StackPane stack = new StackPane(new Group(path));
stack.setAlignment(Pos.TOP_LEFT);
primaryStage.setScene(new Scene(stack, 100, 100));
primaryStage.show();
}
不使用StackPane,它看起来像我期望的那样。该行从(50,50)开始
@Override
public void start(Stage primaryStage) {
MoveTo moveTo = new MoveTo();
moveTo.setX(50);
moveTo.setY(50);
LineTo lineTo = new LineTo();
lineTo.setX(100);
lineTo.setY(100);
Path path = new Path(moveTo, lineTo);
primaryStage.setScene(new Scene(new Group(path), 100, 100));
primaryStage.show();
}
答案 0 :(得分:1)
stackpane将尝试调整每个子节点的大小以填充其内容 区域。如果孩子的大小不能填充堆叠窗格(或者 因为它不可调整大小或其最大大小阻止了它然后它 将使用alignment属性在区域内对齐 默认为Pos.CENTER。
由于Path
无法调整大小,因此无法调整大小,只是根据您设置的对齐方式进行定位。在Group
中进行换行并不会有帮助,因为Group
会占用其子级的范围。
使用常规Pane
代替StackPane
(可能是最方便的解决方案):
Pane stack = new Pane(path);
或将路径包装在Pane
(调整大小等):
StackPane stack = new StackPane(new Pane(path));