2016-04-09 179 views
1

我想在2個不同場景之間切換:動態切換JavaFX中的場景

場景1:ScrollPane其中加載不同圖像。

場景2:舞臺是透明的,這裏只有1按鈕,返回到場景1

從來就已經能夠做到這一點只是有每個場景不同FXML每一次創建一個新的場景我切換它們。

問題是,當我從場景2切換到場景1時,場景1中加載的所有圖像都不存在(這很明顯,因爲我正在創建新場景,而不是「加載」場景1.

有什麼辦法讓我從場景2 SWITH場景1

場景1

public class ControllerImpl implements Initializable, ControlledScreen { 
ScreensController myController; 
public void initialize(URL url, ResourceBundle rb) { 
} 
public void setScreenParent(ScreensController screenParent){ 
    myController = screenParent; 
} 
@FXML 
private void goToScreen2(ActionEvent event) throws Exception{ 
    try { 
     Stage primaryStage = (Stage) hideStage.getScene().getWindow(); 
     FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/arrow.fxml")); 
     Parent root1 = fxmlLoader.load(); 
    primaryStage.setScene(new Scene(root)); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
@FXML 
public javafx.scene.control.Button hideStage; 

}

第二幕:已加載的圖片:

public class ControllerArrow implements Initializable{ 

ScreensController myController; 

@Override 
public void initialize(URL url, ResourceBundle rb) { 
} 

public void setScreenParent(ScreensController screenParent){ 
    myController = screenParent; 
} 

@FXML 
public javafx.scene.control.Button showStage; 

@FXML 
private void goToScreen1(ActionEvent event) throws Exception{ 

    try{ 

     Stage stage = (Stage) showStage.getScene().getWindow(); 

     FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/sample.fxml")); 
     Parent root = fxmlLoader.load(); 

    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

回答

1

您可以切換你的舞臺的場景,如:

Stage stage = (Stage) scene.getWindow(); 
stage.setScene(yourScene); 

所以,當你有你的場景的情況下,你可以將它應用到你的舞臺

+0

謝謝爲了您的迴應。我如何選擇前一個場景?我有兩個不同的控制器。我是否必須定義主要場景? –

+0

如何實例化你的場景?完整的代碼示例會很有幫助。 – jns

+0

我已經添加了問題中的代碼。 –