2016-04-09 137 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

我已经添加了问题中的代码。 –