目前我的程序有一个动态构建的菜单JTree
。我将菜单构建器传递给一个对象,该对象使用一个字符串数组描述它的路径,其中每个元素表示一个节点,然后将最终节点设置为调用该对象的方法。只有在节点不存在的情况下才会创建新节点,否则会检查子菜单并重复整个过程。动态构建菜单
我想切换到JMenu
系统而不是树,但我有一些问题。
因此,例如,字符串数组看起来像:
["New", "Job", "Item A"]
["New", "Job", "Item B"]
["New", "Search", "Item C"]
这一操作将创建一个树一样:
┬ New
├──┬ Job
│ ├── Item A
│ └── Item B
└──┬ Search
└── Item C
现在我遇到的问题是我不能告诉如果子菜单已存在,其中JMenu
。如何检查是否存在具有所需名称的子菜单?
下面是我如何建立JTree
一个例子:
String[] nodeNames = pane.getNodeDirectory();
MenuTreeNode targetNode = root;
int i = 0;
if(targetNode.getChildCount() > 0) {
//Search for the first node that doesn't exist in the pane's directory
for(; i < nodeNames.length; ++i) {
Enumeration e = targetNode.children();
while(e.hasMoreElements()) {
MenuTreeNode node = (MenuTreeNode)e.nextElement();
if(node.getName().equals(nodeNames[i])) {
targetNode = node;
break;
}
}
//We've been over all the children and none matched so we need
//to build the rest of the directory.
if(!e.hasMoreElements()) {
++i;
break;
}
}
}
//Build the remainder of the pane's directory
for(; i < nodeNames.length; ++i) {
MenuTreeNode currentNode = new MenuTreeNode(nodeNames[i]);
targetNode.add(currentNode);
targetNode = currentNode;
}
targetNode.setContentPane(pane);
model.nodeStructureChanged(root);
这差不多就是我现在测试我尝试多一些之后有。谢谢。 – Lerp