1

我有 ObservableLists 的 ObservableLists 的 ObservableList...

它基本上下降了4个级别。

目标有一个列表

目标有一个列表

策略有一个列表

战术有一个列表

任务

显然,这看起来像是设置 TreeView 以显示此数据的完美场景。怎样才能使结构中所做的任何更改也显示在 TreeView 上?

我认为目标将是根节点。每当将一个目标添加到其列表中时,我们都可以监听它并提醒目标刚刚创建了一个目标。我应该如何以及在哪里设置这个监听器?我是否提醒目标?或者我是否提醒一些静态实用程序类来更新它的 TreeView?

4

1 回答 1

1

使用 ObservableList 并添加侦听器,您可以轻松完成您的工作。

假设您在目标上放置了一个侦听器。然后你会看到Objective的一些变化。如果发生更改(例如添加了一个目标),您将针对使用特定目标的 TreeItem(例如使用地图),然后向其添加一个子项。

当然,您可以通过以下方法简化您的工作:

private void addObjective(TreeItem<Object> specificGoal, List<Strategy > objective){
    TreeItem<Object> objectiveTreeItem = new TreeItem<>(objective);

    for(List<Tactic> strategy: objective){
        addStrategy(objectiveTreeItem, strategy);
    }
    specificGoal.getChildren().add(objectiveTreeItem);
}

为每一层都有一个方法。

当然,如果数据量很小,您可以只擦除 TreeView 项目,然后使用更新的 List 重新启动用于创建它的方法。更简单但未优化。

于 2014-07-18T15:05:12.397 回答