我似乎无法弄清楚如何继续这里。我正在尝试创建一个家庭树程序来解释用户输入并在动画窗口中创建和绘制新节点。例如,用户将键入“John son of Jim”,标记为John的节点将出现在已经存在的标记为Jim的节点下。
这方面的图形方面已经完成,但我不知道如何继续添加子项并将它们链接到正确的父项。我为此创建了一个arraylist吗?
String testString = wordTextField.getText();
String[] parts = testString.split(" ");
String firstWord = parts[0];
String lastWord = parts[parts.length - 1];
TreeNode *child's name* = new TreeNode(String firstWord, TreeNode *parent's name*);
在上面的代码中,最后一行不正确,但是我将它标记为类似,以显示它们在TreeNode方法中的类型。星号是我希望变量名称作为字符串值,但我知道这可能是不可能的。我该怎么做才能让这个工作?我希望用户能够连续创建子节点,以及那些子节点的子节点,只有一个根父节点。我希望能够组织哪个父项具有哪个子项,并正确分配。任何帮助将不胜感激!
答案 0 :(得分:0)
你不能这样做,你也不应该这样做。你需要的是将父母与孩子联系起来。由于我不了解您的申请背景,因此很难提出具体的建议。当您在子项的构造函数中传递父节点时,您似乎处于正确的轨道上。为什么需要在用户输入后命名变量?变量名称可以是任何名称。
答案 1 :(得分:0)
你不能这样做但如果你想要一个字符串代表一个节点,你可以使用Map。首先,初始化地图以保存所有节点:
Map<String, TreeNode> nodes = new HashMap<String, TreeNode>();
TreeNode的构造函数将变为:
TreeNode(String firstWord, String parent){
TreeNode parent = nodes.get(parent);
//...
}
每当创建一个节点时,将其放在地图中:
TreeNode node = new TreeNode(firstWord, "parent's name");
nodes.put("child's name", node);