Постоянство состояния между дочерними представлениями и контролерами

У меня есть приложение Java FX с основным представлением (FXML) и его контроллером. Я пытаюсь смоделировать вкладки, такие как дочерние представления (FXML), с их собственными контроллерами. Пока все хорошо, я могу переключаться между дочерними представлениями с помощью следующего кода:

//page type para is the path of FXML file
private void changePage(String pageType) throws IOException
{
    childScene.getChildren().clear();
    FXMLLoader loader = new FXMLLoader(getClass().getResource(pageType));

    loader.setControllerFactory((Class<?> controllerClass) ->
    {
        //trying to load a single instance controller of the child
        if (controllerClass == EngTaiController.class)
        {
            eng2TaiController.setData(words, selectedFont);
            return eng2TaiController;
        }
        try
        {
            return controllerClass.newInstance();
        }catch (Exception ex)
        {
            throw new RuntimeException(ex);
        }
    });
    Parent page = loader.load();
    VBox.setVgrow(page, Priority.ALWAYS);
    //childScene is the container for childviews
    childScene.getChildren().add(page);
}

Проблема в том, что он не сохраняет никакого пользовательского состояния, текста в текстовых полях, выбора в представлении списка, загруженных пользовательских элементов управления в дочерних представлениях при переключении из одного представления в другое.

0 ответов

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