I'm trying to find a way to prevent divider positions from changing when one of the dividers is constrained by a maxWidth property.
In the example I'm clicking a button to minimise a panel, and want the central pane to resize to accommodate the extra space available, but the extra space is instead shared between the two other panels.
After clicking left button, right divider has moved
@Override
public void start(Stage stage) {
BooleanProperty clicked1 = new SimpleBooleanProperty(false);
BooleanProperty clicked2 = new SimpleBooleanProperty(false);
Button button1 = new Button("Click");
button1.setOnAction(event -> clicked1.set(!clicked1.get()));
button1.setMaxWidth(800);
Button button2 = new Button("Click");
button2.setOnAction(event -> clicked2.set(!clicked2.get()));
button2.setMaxWidth(800);
StackPane pane1 = new StackPane(button1);
StackPane pane2 = new StackPane();
StackPane pane3 = new StackPane(button2);
pane1.maxWidthProperty().bind(Bindings.createDoubleBinding(() -> clicked1.get() ? 40.0 : Double.MAX_VALUE, clicked1));
pane3.maxWidthProperty().bind(Bindings.createDoubleBinding(() -> clicked2.get() ? 40.0 : Double.MAX_VALUE, clicked2));
SplitPane splitPane = new SplitPane(pane1, pane2, pane3);
splitPane.setPrefSize(600, 400);
SplitPane.setResizableWithParent(pane1, false);
SplitPane.setResizableWithParent(pane3, false);
splitPane.setDividerPositions(0.25, 0.75);
stage.setScene(new Scene(splitPane));
stage.show();
}