2014-07-07 64 views

回答

9

將其綁定到父

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()); 
+0

我發現了一段時間前,但不過謝謝。 – fho

+0

父類不包含heightProperty()或widthProperty()。 – Arceus

+0

你使用的是什麼父類?你可以在父類中添加一個堆棧窗格,然後綁定子目錄嗎? – MitchBroadhead

3

我發現這也是非常重要的子場景對象的管理屬性設置爲false。

subscene.setManaged(false); 

這樣,子場景對象的大小不會影響其父StackPane物體的大小和大小調整還將努力減少StackPane對象的大小時。

+0

正是我需要縮小子場景 – Josephus87

0

通過以下方法,您可以將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 
       } 
      } 
      }