我有两个StackPanes(pane1和pane2)在SplitPane(splitPane)中显示。 SplitPane的分隔符位置在构建器中设置为0.3。第二个StackPane(pane2)包含一个按钮,该按钮还将SplitPane的分隔符位置设置为0.3。
其他条件不变,预期行为应该是两个操作(在构建器中设置分隔符位置和通过操作设置分隔符位置)都能够正常工作或者都不能正常工作。
然而,只有后者实际上有效。
在SplitPane的构建和Button的onAction之间发生了什么变化?是什么阻碍了构建器中分隔符的放置?
其他条件不变,预期行为应该是两个操作(在构建器中设置分隔符位置和通过操作设置分隔符位置)都能够正常工作或者都不能正常工作。
然而,只有后者实际上有效。
在SplitPane的构建和Button的onAction之间发生了什么变化?是什么阻碍了构建器中分隔符的放置?
StackPane pane1 = new StackPane();
StackPane pane2 = new StackPane();
final SplitPane splitPane = SplitPaneBuilder.create()
.items(pane1, pane2)
// Environment A
.dividerPositions(new double[] {.3}) // splitPane.setDividerPosition(s)(...), etc. yield same result
.orientation(Orientation.HORIZONTAL)
.build();
// The following line influences environment A outcome, though it does not fix the issue
SplitPane.setResizableWithParent(pane1, false);
pane2.getChildren().add(ButtonBuilder.create()
.text("Divider Position")
.onAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// Environment B
splitPane.setDividerPositions(.3);
}
})
.build());
Scene primaryScene = SceneBuilder.create()
.root(splitPane)
.build();
primaryStage.setScene(primaryScene);
primaryStage.setTitle("Name");
primaryStage.setWidth(500);
primaryStage.setHeight(500);
primaryStage.show();