Am new to JavaFX and changing only a component of a scene on button click while other components of the scene remain unchanged is giving me hard times. I have a splitpane with 2 divisions. One part containing a HBox with buttons and a VBox on the other. How can I replace the VBox depending on button clicked ? thanks in advance, Below is my sample code:
public class ShoolLibrary extends Application {
    BorderPane b_pane;
    SplitPane common;
    Scene scene; 
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("The Library");
        b_pane = new BorderPane();
        common = commonGround();
        b_pane.setCenter(common);
        scene = new Scene(b_pane, 700, 480);
        primaryStage.setScene(scene);
        primaryStage.show();
    } 
     //Main Content 
     private SplitPane commonGround(){
         HBox hb = new HBox(); //Holds Buttons for Action
         VBox vb = new VBox(); //This should change depending on button click
            Button btn1 = new Button("library profile");
            Button btn2 = new Button("Books");
            Button btn3 = new Button("Members");
            //Button Action
            btn1.setOnAction(actionEvent -> /*Replace vb with profile()*/);
            btn2.setOnAction(actionEvent -> /*Replace vb with books()*/);
            btn2.setOnAction(actionEvent -> /*Replace vb with members()*/));
            hb.getChildren().addAll(btn1,btn2,btn3);
            SplitPane sp = new SplitPane();
            sp.setOrientation(Orientation.HORIZONTAL);
            sp.getItems().addAll(hb,vb);
            return sp;
    }
    private VBox profile(){
         txt = new Text("Inside library profile");
            VBox vbx1 = new VBox();
            vbx1.getChildren().add(txt);
            return vbx1;
    }
    private VBox books(){
         txt = new Text("Inside books");
            VBox vbx1 = new VBox();
            vbx1.getChildren().add(txt);
            return vbx1;
    }
    private VBox members(){
         txt = new Text("Inside Members");
            VBox vbx1 = new VBox();
            vbx1.getChildren().add(txt);
            return vbx1;
    }
    public static void main(String[] args) {
        launch(args);
    }
}
				
                        
How about using a wrapper pane in which you place your vBoxes?
then:
and so on...