With the following approach you can put your SubScene into any class that extends the Pane class (e.g. BorderPane, GridPane, etc.). Also the subScene can have a different size from your Pane:
public class GuiControler extends BorderPane implements Initializable,ChangeListener { //Set a changeListener to the Stage's Window and Implement the ChangeListener in the class where you want to make the subScene scaling. stage.widthProperty().addListener(this); stage.heightProperty().addListener(this); //.... @Override public void changed(ObservableValue observable, Object oldValue, Object newValue) { double width = stage.getWidth(); double height = stage.getHeight(); if(observable.equals(this.widthProperty())) { double scale = width / 400; // 400 is my initial width size of the stage (main java app window) window subScene.setWidth(200*scale); // 200 is my initial size of the subscene window }else if(observable.equals(this.heightProperty())){ double scale = height / 400; // 400 is initial size for stage height window subScene.setHeight(250*scale); // 250 is initial size for subScene width } } }