子视图和控制器之间的状态持久性

时间:2017-02-28 04:20:02

标签: javafx-8 childviews

我有一个Java FX应用程序,它有一个主视图(FXML)及其控制器。我正在尝试使用自己的控制器模拟像孩子视图(FXML)一样的 tabpane 。到目前为止,我可以使用以下代码在子视图之间切换:

//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 个答案:

没有答案