我有两个 StackPane (pane1 & pane2) 显示在 SplitPane (splitPane) 中。SplitPane 的分隔线位置在构建器中设置为 .3。第二个 StackPane (pane2) 包含一个 Button,它还将 SplitPane 的分隔符位置设置为 0.3。
在其他条件不变的情况下,预期的行为将是两种操作(在构建器中设置分隔线位置并通过操作设置分隔线位置)要么工作要么不工作。
然而,只有后者真正有效。
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();