1

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

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

此名称列表未排序,我想为这样的TreeNode结构构建JTree

  • 扳机
    • 按钮
    • 杠杆
    • 盘子
  • 出去
      • 落门

此外,如果用户选择叶节点,我需要从TreePath. 有人可以建议如何做到这一点。

4

2 回答 2

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 方法的工作,等等。自己尝试一下——如果您还有其他问题,请提出问题并向我们展示您已尝试自己完成,那么我们将更愿意帮助您解决小问题。

于 2012-10-31T08:51:21.223 回答
1
于 2012-10-31T08:49:27.540 回答