Mit dem folgenden Ansatz können Sie Ihren SubScene in jede Klasse einfügen, die die Pane-Klasse erweitert (z. B. BorderPane, GridPane usw.). Auch der SubScene kann eine andere Größe haben als Ihr Fenster:
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
}
}
}
Ich habe das vor einiger Zeit herausgefunden, aber danke trotzdem. – fho
Übergeordnete Klasse enthält keine heightProperty() oder widthProperty(). – Arceus
Welche Elternklasse verwenden Sie? Können Sie innerhalb der Elternklasse ein Stackpanel hinzufügen und dann Subscene binden? – MitchBroadhead