我有ObservableLists ObservableLists的ObservableList ......
它基本上下降了4个级别。
目标有一个
列表目标有一个
列表策略有一个
列表Tactic有一个
列表任务
显然,这看起来像是设置TreeView以显示此数据的完美方案。怎么做才能使结构中的任何更改也出现在TreeView上?
我认为目标将是根节点。每当将一个目标添加到其列表中时,我们就可以监听它并提醒刚刚创建了一个目标的目标。我应该如何以及在何处设置此侦听器?我是否提醒目标?或者我是否提醒某些静态实用程序类更新其TreeView?
答案 0 :(得分:1)
使用ObservableList并添加Listeners,您可以轻松完成任务。
假设您在目标上放置了一个监听器。然后你会看一些Objective的变化。如果发生了更改(例如添加了一个目标),您将使用特定目标(例如使用Map)将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创建它的方法。更简单但没有优化。