Переключение между сценами в разных классах javafx

У меня есть приложение, которое я хочу иметь возможность переключаться между сценами, каждая из которых имеет свой код в JavaFX.

Например, моя стартовая сцена имеет следующий код:

public class Main extends Application
{
    ...
    start(Stage window)
    {
        GridPane root = new GridPane();
        root.setVgap(50);
        window.setScene(new Scene(root, 1050, 800));
        ... //code specific to that class and scene
        window.show();
     }
}

Затем, когда я перемещаю сцены в мой домашний класс, я звоню

Home home = new Home();

внутри моего основного класса. Вот мой домашний код:

public class Home
{
    public Home(Stage window)
    {
        GridPane root = new GridPane();
        root.setVgap(50);
        window.setScene(new Scene(root, 1050, 800));
        ... //code that adds nodes to root that is specific to class

        //button to switch scenes
        Button button = new Button("Start lesson");
        button.setOnAction((ae) -> Lesson lesson = new Lesson());

        window.show();
    }
}

Который вызывает этот класс урока при нажатии кнопки, чтобы начать урок:

public class Lesson
{
    private int index;

    public Lesson(Stage window)
    {
        FlowPane root = new FlowPane();
        root.setHgap(50);
        root.setVgap(50);
        root.setAlignment(Pos.CENTER);
        window.setScene(new Scene(root, 1050, 800));
        index = 0;

        ...//code that adds nodes to root that is specific to class
        window.show()
     }

     public void moveForward()
     {
         index++;
         if(index > *condition*)
         {
             Home home = new Home();
         }
         else
         {
             FlowPane root = new FlowPane();
             root.setHgap(50);
             root.setVgap(50);
             root.setAlignment(Pos.CENTER);
             window.setScene(new Scene(root, 1050, 800));

             ...//code that adds nodes to scene including button2

             button2.setOnAction((ae) -> moveForward());
             window.show();
        }
} 

После того, как метод moveForward() был вызван несколько раз, и он пытается вернуться к сцене Home(), я получаю исключение, так как после завершения конструктора он пытается завершить рекурсивный метод moveForward(). Как правильно переключаться между слайдами или как это исправить. Спасибо за любую помощь заранее.

0 ответов

Другие вопросы по тегам