我正在创建一个编辑器应用程序,我的菜单出了问题。在对象菜单中,我想使用JTree
显示多个对象类型。这些对象类型由插件动态注册,并遵循以下样式:
trigger.button
trigger.lever
out.door.fallgate
trigger.plate
out.door.door
...
此名称列表未排序,我想为TreeNode
构建JTree
结构,如下所示:
此外,如果用户选择叶节点,我需要从TreePath
重新创建对象名称(例如trigger.button)。有人可以建议如何做到这一点。
答案 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)