Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to lock the divider in SplitPane JavaFX?

Tags:

javafx

I have a SplitPane and I need to divide the layout 25% and 75%. Also, I need to disallow dragging towards right side beyond the 25% split. However I can drag to any extent within the 25% space. Please help.

like image 554
NaveenBharadwaj Avatar asked Jan 13 '15 11:01

NaveenBharadwaj


1 Answers

SplitPane will respect the min and max dimensions of the components (items) it contains. So to get the behavior you want, bind the maxWidth of the left component to splitPane.maxWidthProperty().multiply(0.25):

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ConstrainedSplitPane extends Application {

    @Override
    public void start(Stage primaryStage) {
        StackPane leftPane = new StackPane(new Label("Left"));
        StackPane rightPane = new StackPane(new Label("Right"));
        SplitPane splitPane = new SplitPane();
        splitPane.getItems().addAll(leftPane, rightPane);
        splitPane.setDividerPositions(0.25);

        //Constrain max size of left component:
        leftPane.maxWidthProperty().bind(splitPane.widthProperty().multiply(0.25));

        primaryStage.setScene(new Scene(new BorderPane(splitPane), 800, 600));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
like image 64
James_D Avatar answered Nov 10 '22 15:11

James_D