Java:如何检查字符串的整个 JTree 路径

标签 java swing jtree treemodel

我已经看了一段时间了,但我似乎真的无法在网上找到很多相关信息。我有一个 JTree 和一个字符串列表。我只想搜索每个字符串的 JTree 的最低级别(因此不是搜索树中的每个节点,只是搜索最低的节点),如果我要搜索的字符串存在于最低节点路径

像这样

public List<String> searchLowestNodes(List<String> wordsToSearchFor){
    List<String> matches = new ArrayList<>;
    for(String word: wordsToSearchFor){
        // i do not know how to get the lowest node for each path
        if(path.contains(word)){
            matches.add(word);
        }
        //keep looping for all paths
     }
     return matches;
}

有谁知道如何做到这一点?

编辑:树示例

Root
-assignment1
--paul
---example.java
--john
---example.java
-assignment2
--a2
---sean
----assignment.java
---mark
----assignment.java

所以给定下面的树,它应该只在下面的路径中搜索单词

root>assignment1>paul>example.java
root>assignment1>john>example.java
root>assignment2>a2>sean>assignment.java
root>assignment2>a2>mark>assignment.java

我不想添加

root>assignment1
root>assignment1>paul
...

最佳答案

首先,获取树模型的根:

rootNode = (DefaultMutableTreeNode)tree.getModel().getRoot()

现在有了这个节点,遍历整棵树并将叶子存储在你自己的数据结构中。您可以使用 rootNode.depthFirstEnumeration() 遍历树,遍历枚举器并检查每个元素 element.isLeaf()

获得所有叶子后,获取它们的路径:element.getPath()。这为您提供了一个从根节点到叶节点的节点数组。

现在您可以随心所欲地使用它们。

关于Java:如何检查字符串的整个 JTree 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367432/

相关文章:

java - 当需要 Scala 的列表时,使用 java.util.List 从 Java 调用 Scala 代码

java - 我如何暂停这个球?

java - 在另一个变量中插入一个变量

java - 不兼容的类型错误: JTextField cannot be converted to String

java - 如何在树表中添加复选框

java - 2 个 JTree 之间的 DataFlavors (Java)

java - 为什么我的自定义 ArrayAdapter 没有被填充?

java - 如何将 Javascript 数组传递给 Spring Controller 类

java - Compare和compareTo的负返回值和正返回值

java - 如何将复选框添加到 JTree 节点以管理多选?