JavaFX:在TreeView中显示存储的CheckBoxTreeItem选择

JavaFX:在TreeView中显示存储的CheckBoxTreeItem选择,javafx,checkbox,treeview,Javafx,Checkbox,Treeview,我使用树状视图选择稍后将显示在报告上的部分。为了提高用户友好性,我决定保存选择,这样用户下次就不必再次选择相同的部分。我已经保存了选择,但是当视图初始化时,treeView不能正确显示选择(img 1)。我正在寻找一种显示树状视图的方式,如img 2中所示 public class Main extends Application { public static void main(String[] args) { launch(args); } @Ov

我使用树状视图选择稍后将显示在报告上的部分。为了提高用户友好性,我决定保存选择,这样用户下次就不必再次选择相同的部分。我已经保存了选择,但是当视图初始化时,treeView不能正确显示选择(img 1)。我正在寻找一种显示树状视图的方式,如img 2中所示

public class Main extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<>("Root");

        CheckBoxTreeItem<String> aItem = new CheckBoxTreeItem<>("A");

        CheckBoxTreeItem<String> a1Item = new CheckBoxTreeItem<>("A_1");
        CheckBoxTreeItem<String> a2Item = new CheckBoxTreeItem<>("A_2");

        CheckBoxTreeItem<String> bItem = new CheckBoxTreeItem<>("B");
        CheckBoxTreeItem<String> cItem = new CheckBoxTreeItem<>("C");

        a1Item.setSelected(true);
        aItem.setExpanded(true);

        aItem.getChildren().addAll(a1Item, a2Item);

        rootItem.getChildren().addAll(aItem, bItem, cItem);
        rootItem.setExpanded(true);

        TreeView treeView = new TreeView(rootItem);
        treeView.setCellFactory(CheckBoxTreeCell.<String>forTreeView());

        Scene scene = new Scene(treeView, 400, 400);
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
public类主扩展应用程序{
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公共无效开始(阶段primaryStage){
CheckBoxTreeItem rootItem=新的CheckBoxTreeItem(“根”);
CheckBoxTreeItem aItem=新的CheckBoxTreeItem(“A”);
CheckBoxTreeItem a1Item=新的CheckBoxTreeItem(“A_1”);
CheckBoxTreeItem a2Item=新的CheckBoxTreeItem(“A_2”);
CheckBoxTreeItem bItem=新的CheckBoxTreeItem(“B”);
CheckBoxTreeItem cItem=新的CheckBoxTreeItem(“C”);
a1项。选择的设置(正确);
aItem.setExpanded(真);
aItem.getChildren().addAll(a1项,a2项);
getChildren().addAll(aItem、bItem、cItem);
setExpanded(true);
TreeView TreeView=新的TreeView(根项目);
setCellFactory(CheckBoxTreeCell.forTreeView());
场景=新场景(treeView,400400);
scene.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm());
初级阶段。场景(场景);
primaryStage.show();
}
}

如果先将CheckBoxTreeItems添加到其各自的父项,则在更改值之前,值更改将触发工作,应用程序将按预期工作

aItem.getChildren().addAll(a1Item, a2Item);

rootItem.getChildren().addAll(aItem, bItem, cItem);

a1Item.setSelected(true);
aItem.setExpanded(true);

我知道这一定很简单,但我不知道那是什么。谢谢:)