【问题标题】:JavaFX: display stored CheckBoxTreeItem selection in TreeViewJavaFX:在 TreeView 中显示存储的 CheckBoxTreeItem 选择
【发布时间】:2019-11-25 11:22:09
【问题描述】:

我使用树视图来选择稍后将显示在报告中的部分。为了提高用户友好性,我决定保存选择,以便用户下次不必再次选择相同的部分。我已经保存了选择,但是当视图初始化时,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();
    }
}

【问题讨论】:

    标签: javafx checkbox treeview


    【解决方案1】:

    如果您先将 CheckBoxTreeItems 添加到它们各自的父项,在更改值之前,值更改触发器会起作用,并且应用程序会按预期工作。

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

    【讨论】:

    • 我知道它一定很简单,但我不知道它是什么。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多