【发布时间】:2016-06-20 12:41:20
【问题描述】:
Step1-首先我创建一个First Jtree。
Step2-然后使用这个Jtree我创建了一组JTrees并使用一些计算的权重值添加到HashMap。
Step3-然后我从这个HashMap中选择一个JTree。
Step4-现在我想从 step2 重复到 step3。
在重复之前,我只想为未来的过程选择选定的树。 但它需要最终的 HashMap 将树添加到收割过程。我更新了相同的树并添加到 HashMap。
public class JavaTree extends JFrame {
public static HashMap<String, DefaultMutableTreeNode> nodeReg = new HashMap<String, DefaultMutableTreeNode>();
public static void main(String[] args) {
}
public JTree method1() {
HashMap<JTree, Double> value = new HashMap<JTree, Double>();
//create tree root
DefaultMutableTreeNode Treeroot = new DefaultMutableTreeNode(new NodeInfor3(rootNode,x1));
//create tree
JTree firstTree = new JTree(Treeroot);
add(firstTree);
// create the child nodes
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(new NodeInfor3(nodeName1, x2));
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(new NodeInfor3(nodeName2), x3));
nodeReg.put(rootNode, Treeroot);
nodeReg.put(nodeName1), node1);
nodeReg.put(nodeName2, node2);
Treeroot.add(node1);
Treeroot.add(node2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("First JTree");
this.pack();
this.setVisible(true);
for (Map.Entry m1 : newNodeSet.entrySet()) {-----forloop X
for (Map.Entry m3 : TargetNodes.entrySet()) { -----forloop Y
DefaultMutableTreeNode targetNode = nodeReg.get(nodeName3);
targetNode.add(newAddingNode);
tree2 = new JTree(Treeroot);
add(tree2);
//ADD TO CALCULATION
WeghtOfSubTrees.put(tree2, calculated value));
}
//find maximum value with tree-using WeightOfSubTrees HashMap
I take selected Jtree name as a SELECTEDTREE
-------------------------------------------------------------------------
//THEN I WANT TO REPEAT. BUT WANT TO TAKE SELECTED TREE TO ABOVE PROCEDURE. IT TOOK FINAL VALUE OF HASHmAP.
tree2.removeAll(); -------------------------------???????
tree2 =SELECTEDTREE;-----------------------???????
-------------------------------------------------------------------------
WeghtOfSubTrees.clear();
}
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("New tree");
this.pack();
this.setVisible(true);
}
}
我在上面的代码中包含了编辑点。可能是复杂的代码。我想我想将新选择的 Jtree 分配给第一个 Jtree。我使用了以下代码部分。
tree2.removeAll();
tree2 =SELECTEDTREE;
但是,它不起作用。如何在 gotofor loop X 之前为第一个创建的树分配新树?
【问题讨论】:
-
我真的对你的代码感到困惑。你能发布一个工作代码吗?
-
感谢您的回复。但是我的代码很大。因此,我将其添加为摘要。我为此感到抱歉。正如我最后提到的,有没有办法让一个 Jtree 与另一个 Jtree 相等?
-
好的,您可以存储模型并将模型传递给选定的树,而不是存储树本身。
-
您所说的“模型”是什么意思?我无法接受你的想法。
-
每棵树都有一个模型。基于模型,树显示在 UI 上,模型保存数据。因此,不要将树放入地图中,而是将模型放入地图中。而不是这个
tree2.removeAll(); tree2 =SELECTEDTREE;,你可能不得不这样做tree2.setModel(SELECTEDTREE.getModel());