2013-12-09 151 views

回答

2

您必須從另一種方法返回一個場景或在「開始」中創建一個場景,並在舞臺上設置場景。例如:

public static Scene secondScene(final Stage primaryStage){ 
    BorderPane pane = new BorderPane(); 
    Label l = new Label("Second Scene"); 
    pane.setCenter(l); 

     //let's say I have a button that changes back to original stage 
    Button b = new Button("Main stage"); 
    b.setOnAction(new EventHandler<ActionEvent>(){ 
    public void handle(ActionEvent t){ 
      // create your own Scene and then set it to primaryStage 
      primaryStage.setScene(new Scene ...); 
    } 
    }); 

    return new Scene(pane, 300, 300); 
} 

然後在你的啓動方法:

@Override 
public void start(Stage primaryStage){ 
BorderPane mainPane = new BorderPane(); 
Button b = new Button("Register"); 
mainPane.setCenter(b); 

b.setOnAction(new EventHandler<ActionEvent>(){ 
    public void handle(ActionEvent t){ 
      primaryStage.setScene(secondScene(primaryStage)); 
    } 
}); 

    primaryStage.setScene(new Scene(mainPane, 300,300)); 
    primaryStage.show(); 
} 

按下按鈕時,這將變爲 「SecondScene」。

編輯//////////////////////////////////////// 基本上:

您需要將primaryStage作爲參數傳遞給SecondScene,以便將其他場景設置到它上面。 你在這種情況下可以做的是,製作一個輸出主場景然後使用它設置的方法。

public static Scene mainScene(final Stage primaryStage){ 
    ..... 
    return new Scene(...); 
} 
+0

謝謝:)那已經很實用了, 但是我該如何改回第一個場景呢? :o ,因爲我不能使用「primaryStage.setScene(secondScene);」 ,因爲它是一個未知變量 – Kaito

+0

檢查編輯。編輯。 – Stevantti

+0

真棒:) 非常感謝你:D – Kaito