2016-04-09 3 views
1

Я хочу, чтобы переключаться между 2 различными сценами:Переключение сцен в JavaFX динамически

Сцена 1: ScrollPane где загрузить различные изображения.

Сцена 2: сцена прозрачна, и есть только одна кнопка для возврата к Scene 1.

I've было в состоянии сделать это просто, имеющий различную FXML для каждой сцены и создать новую сцену каждый раз, когда я переключите их.

Проблема заключается в том, когда я переключаюсь от сцены к сцене 2 1, все изображения, загруженные в сцене 1, не существует (очевидно, как подмигнули I'm создания новой сцены, а не «загрузка» СЦЕНЫ1.

есть ли способ сохранить изображения уже загружены, когда я Swith из Scene 2 Сюжетные 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; 

}

СЦЕНЫ2:

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

Я добавил код в вопрос. –

Смежные вопросы