Код: Выделить всё
public class TestFx extends Application {
public static void main(String[] args) {
launch(args);
}
private final SplitPane splitPane = new SplitPane();
@Override
public void start(Stage primaryStage) {
splitPane.getItems().add(createItem(0));
splitPane.setOrientation(Orientation.VERTICAL);
VBox.setVgrow(splitPane, Priority.ALWAYS);
var fooPane = new Pane(new Label("Foo pane"));
VBox.setVgrow(fooPane, Priority.ALWAYS);
var button = new Button("Test");
button.setOnAction(e -> {
splitPane.getItems().add(createItem(1));
splitPane.setDividerPositions(new double[]{0.5});
printDividerPositions("Current pulse: ");
Platform.runLater(() -> printDividerPositions("2nd pulse: "));
Platform.runLater(() -> Platform.runLater(() -> printDividerPositions("3rd pulse: ")));
});
var root = new VBox(splitPane, fooPane, button);
Scene scene = new Scene(root, 500, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
private void printDividerPositions(String pulseInfo) {
System.out.println(pulseInfo + Arrays.toString(splitPane.getDividerPositions()));
}
private Pane createItem(int index) {
var pane = new Pane(new Label("Item : " + index));
if (index == 0) {
SplitPane.setResizableWithParent(pane, true);
} else {
SplitPane.setResizableWithParent(pane, false);
}
return pane;
}
}
< /code>
И это выход: < /p>
Current pulse: [0.5]
2nd pulse: [0.5]
3rd pulse: [0.9797297297297297]
Подробнее здесь: https://stackoverflow.com/questions/797 ... blewithpar