从点分隔的字符串列表中创建JTree

时间:2012-10-31 08:41:48

标签: java swing jtree treenode treemodel

我正在创建一个编辑器应用程序,我的菜单出了问题。在对象菜单中,我想使用JTree显示多个对象类型。这些对象类型由插件动态注册,并遵循以下样式:

trigger.button
trigger.lever
out.door.fallgate
trigger.plate
out.door.door
...

此名称列表未排序,我想为TreeNode构建JTree结构,如下所示:

  • 触发
    • 按钮
      • fallgate

此外,如果用户选择叶节点,我需要从TreePath重新创建对象名称(例如trigger.button)。有人可以建议如何做到这一点。

2 个答案:

答案 0 :(得分:2)

在伪代码中,这就是你需要做的......

public TreeNode buildTree(){
    String[] names = new String[]; // fill this with the names of your plugins

    TreeNode tree;

    // for each plugin name...
    for (int i=0;i<names.length;i++){
        String currentName = names[i];
        String[] splitName = currentName.split(".");

        // loop over the split name and see if the nodes exist in the tree. If not, create them
        TreeNode parent = tree;
        for (int n=0;n<splitName.length;n++){
            if (parent.hasChild(splitName[n])){
                // the parent node exists, so it doesn't need to be created. Store the node as 'parent' to use in the next loop run
                parent = parent.getChild(splitName[n]);
            }
            else {
                // the node doesn't exist, so create it. Then set it as 'parent' for use by the next loop run
                TreeNode child = new TreeNode(splitName[n]);
                parent.addChild(child);
                parent = child;
            }
        }

return tree;
}

这只是伪代码 - 您需要正确地执行TreeNode方法的工作,等等。亲自尝试一下 - 如果您有任何其他问题,请创建一个问题并告诉我们您&#39我试图自己做,然后我们会更愿意帮助你解决小问题。

答案 1 :(得分:1)