This code將創建一個300x300大的3d場景。調整包含窗口/舞臺的大小時,視口不會調整大小。如何調整JavaFX 3D SubScene的大小?
Parent
沒有任何width
或height
屬性。如何將Parent
和/或SubScene
的大小調整爲更改的窗口大小?
This code將創建一個300x300大的3d場景。調整包含窗口/舞臺的大小時,視口不會調整大小。如何調整JavaFX 3D SubScene的大小?
Parent
沒有任何width
或height
屬性。如何將Parent
和/或SubScene
的大小調整爲更改的窗口大小?
將其綁定到父
SubScene subscene = new SubScene(root, 1024, 768, true, null);
subscene.setFill(Color.GREY);
subscene.setCamera(camera);
StackPane stackPane = new StackPane();
stackPane.getChildren().add(subscene);
subscene.heightProperty().bind(stackPane.heightProperty());
subscene.widthProperty().bind(stackPane.widthProperty());
我發現這也是非常重要的子場景對象的管理屬性設置爲false。
subscene.setManaged(false);
這樣,子場景對象的大小不會影響其父StackPane物體的大小和大小調整還將努力減少StackPane對象的大小時。
正是我需要縮小子場景 – Josephus87
通過以下方法,您可以將SubScene放入任何擴展Pane類的類(例如BorderPane,GridPane等)。 subScene也可以有不同的大小,從你的窗格:
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
}
}
}
我發現了一段時間前,但不過謝謝。 – fho
父類不包含heightProperty()或widthProperty()。 – Arceus
你使用的是什麼父類?你可以在父類中添加一個堆棧窗格,然後綁定子目錄嗎? – MitchBroadhead