嘿伙计们,我一直在努力找出问题的解决方案。我想在我的JavaFx应用程序中实现ControlsFX CheckTreeView。基本上我有一个字符串列表,其格式与网站上的导航栏相匹配。到目前为止,示例Admin.Config.User将是其中一个字符串。我已经解析了这些String并将它们转换为LinkedHashMap,其中每个父节点都有子节点,这些子节点将存储每个子节点的列表以及子节点的CheckBoxTreeItem。
创建CheckTreeView对象时,可以传递Root CheckBoxTreeItem或不带参数进行初始化。
CheckBoxTreeItem Documentation
我很难想象如何构建一个树底到一个根CheckBoxTreeItem。
// Contains the Nodes with children and corresponding CheckBoxTreeItems
LinkedHashMap<String, LinkedHashMap<String, CheckBoxTreeItem<String>>> navPaths = new LinkedHashMap<String, LinkedHashMap<String, CheckBoxTreeItem<String>>>();
// Was thinking about using this as a check to make sure duplicates are not added
LinkedHasMap<String, String> alreadyAdded = new LinkedHashMap<String, String>
// Check Tree View
CheckTreeView<String> checkTreeView = new CheckTreeView<>();
for(String pathNode : navPaths.keySet()){
for(String childName : testPaths.get(pathNode).keySet()){
// Completely lost once I get here
}
}
// Set built root
//checkTreeView.setRoot();
我真的很挣扎于这个概念,以至于我已经走得很远,如果看来我没有付出任何努力,我会道歉。在过去的12个小时里,我一直在考虑这个概念,而我却一点都没有。如果有人能给我一些帮助,那将非常感谢。
答案 0 :(得分:0)
我建议摆脱链接的哈希映射,直接解析为CheckBoxTreeItem(它可能是此任务所需的唯一数据结构)和(可能)使用递归算法而不是迭代算法。
这是一个insert algorithm for a tree,在你的解析例程中使用类似的东西直接将你解析的每个元素插入CheckBoxTreeItems定义的树中。请注意,您无法准确使用该算法,您将开发出适合您特定需求的算法。
我想我真的不应该回答这个问题,因为它还不太清楚,但是这些信息太长了以至于评论......至少它可能让你开始走另一条道路。