我有一个非常基本的JTree.因为我匆忙,TreeModel如果不需要,我宁愿不使用.我写了一个SSCCE来揭露这个问题:
有时我会添加一个节点.其他时候我删除它们.当我推送时Add,正确添加了一个节点.当我推Remove,它应该删除节点,但它没有.此外,如果我尝试添加多个节点,树只会保留我添加的第一个节点.
我写了一个更新方法JTree,我首先擦除从根节点挂起的所有节点,然后我看看我必须创建哪些节点和子节点.
除了不使用TreeModel操作树之外,我在这里做错了什么?
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class TreeTest {
private JFrame myFrame;
private JTree myTree;
private JButton addButton, removeButton;
private int numberOfNodes;
private DefaultMutableTreeNode rootNode;
private ArrayList<String> graphicIDS;
private ArrayList<String> graphicInfo;
public static void main (String [ ] args){
new TreeTest();
}
public TreeTest() { …Run Code Online (Sandbox Code Playgroud) 我的WinForms .NET应用程序中有一个TreeView控件,它具有多级子节点,其子节点具有更多子节点,没有定义的深度.当用户选择任何父节点(不一定在根级别)时,如何获得该父节点所有节点的列表?
例如,我从这开始:
Dim nodes As List(Of String)
For Each childNodeLevel1 As TreeNode In parentNode.Nodes
For Each childNodeLevel2 As TreeNode In childNodeLevel1.Nodes
For Each childNodeLevel3 As TreeNode In childNodeLevel2.Nodes
nodes.Add(childNodeLevel3.Text)
Next
Next
Next
Run Code Online (Sandbox Code Playgroud)
问题是这个循环深度是定义的,我只是将节点隐藏在三个级别.如果用户下次选择父节点时有七个级别怎么办?
我正在尝试在二叉树中搜索一个节点,如果它在那里则返回,否则返回null.顺便说一句,节点类有一个方法名称()返回一个带有它的名字的字符串...到目前为止我所拥有的是:
private Node search(String name, Node node){
if(node != null){
if(node.name().equals(name)){
return node;
}
else{
search(name, node.left);
search(name, node.right);
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
它是否正确??
我正在处理一个非常复杂的工作流程,我希望将其表示为JavaScript数据结构.流程本质上是一组问题和答案,其中一个问题的答案影响下一个问题.以下是流程可能如下所示的基本示例:

我不确定如何将此流转换为易于使用的JavaScript对象.理想情况下,我希望有一个易于循环/递归的结构,并且可以轻松修改,因此如果有人想在以后更改流程,他们可以这样做,而无需进行太多更改.
我觉得这是一种奇怪的树结构,其中节点可以有多个父节点.(我不确定这样的数据结构是什么.)
无论如何,我唯一的想法是为每个节点分配一个ID,然后创建一个节点对象数组,如下所示:
{
id: 5,
parents: [2, 3],
children: [6, 7, 8]
}
Run Code Online (Sandbox Code Playgroud)
但是,当涉及到循环遍历节点对象时,这似乎是非常不灵活的(尽管我可能是错的).
如果有人可以提供一些关于我应该研究什么样的数据结构以及可能如何在JavaScript中实现它们的指导/指导,我将非常感激.
非常感谢你提前.
可能重复:
javascript中的图形可视化代码?
我需要在Javascript中为节点及其关系创建动态可视化.什么是最好的框架?这是我到目前为止简要回顾的内容:
这些是最好的在图表中显示节点并在javascript中与它们交互吗?
javascript visualization graph tree-nodes javascript-framework
我在我的C#GUI应用程序中使用TreeView和TreeView.Nodes,并希望在我的树中的几个节点上使用右键单击功能.我搜索了很多但似乎SelectedNode仅对左键单击有效,并且没有任何东西可以捕获节点上的右键单击.我想在右键单击时向节点添加"添加","删除","重命名"等功能.有什么指导吗?
谢谢,Viren
TreeNode上IEnumerator的有效参数是什么?
我在这一行得到了错误:
IEnumerator ie = tn.Nodes.GetEnumerator();
Run Code Online (Sandbox Code Playgroud)
在这个方法中:
private void parseNode(TreeNode tn)
{
IEnumerator ie = tn.Nodes.GetEnumerator();
string parentnode = "";
parentnode = tn.Text;
while (ie.MoveNext())
{
TreeNode ctn = (TreeNode)ie.Current;
if (ctn.GetNodeCount(true) == 0)
{
_nodeToString += ctn.Text;
}
else
{
_nodeToString += "<" + ctn.Text + ">";
}
if (ctn.GetNodeCount(true) > 0)
{
parseNode(ctn);
}
}
_nodeToString += "</" + parentnode + ">";
_nodeToString += "\n";
}
Run Code Online (Sandbox Code Playgroud) tree-nodes ×7
c# ×2
java ×2
javascript ×2
.net ×1
binary-tree ×1
graph ×1
jtree ×1
nodes ×1
recursion ×1
swing ×1
treemodel ×1
treeview ×1
vb.net ×1
winforms ×1