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

Java 从点分隔字符串列表创建JTree,java,swing,jtree,treenode,treemodel,Java,Swing,Jtree,Treenode,Treemodel,我正在创建一个编辑器应用程序,我的菜单有问题。在对象菜单中,我想使用JTree显示几种对象类型。这些对象类型由插件动态注册,并遵循以下样式: trigger.button trigger.lever out.door.fallgate trigger.plate out.door.door ... 此名称列表未排序,我想为JTree构建一个TreeNode结构,如下所示: 触发 钮扣 杠杆 盘子 出去 门 安全门 门 此外,如果用户选择叶节点,我需要从TreePath重新创建对

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

trigger.button
trigger.lever
out.door.fallgate
trigger.plate
out.door.door
...
此名称列表未排序,我想为
JTree
构建一个
TreeNode
结构,如下所示:

  • 触发
    • 钮扣
    • 杠杆
    • 盘子
  • 出去
      • 安全门
此外,如果用户选择叶节点,我需要从
TreePath
重新创建对象名称(例如trigger.button)。有人能告诉我怎么做吗。

  • 第二部分,检查代码示例


在psuedocode中,这是您需要做的

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;
}
公共树节点buildTree(){ String[]names=新字符串[];//用插件的名称填充 树形树; //对于每个插件名称。。。
对于(int i=0;我非常感谢你,这正是我所需要的。没问题。如果你认为这是最好的,请记住勾选这个答案,这样其他人都知道你的问题已经解决了。下面是从树路径获取对象名称的另一个方法:公共静态字符串getElementName(树路径){object[]nodes=path.getPath();String result=”“;//读取路径,从索引1开始,因为我们不需要(int i=1;i)的根