在c#中treeview 怎么获取选中节点的子节点

在c#中treeview 怎么获取选中节点的子节点,第1张

风某提供两种方式:

第一种是在TreeView的AfterSelect事件中, TreeViewEventArgs e的这个e具备了Node的属性,也就是说这个eNodeNodes就是被选中的节点的子节点组合。

第二种方式你可以使用treeView1SelectedNode的Nodes属性,也就是thistreeView1SelectedNodeNodes,就是TreeView的被选中的树节点子节点了

首先用Eclipse设置好界面

2

设计出来的运行界面如下图:

3

当选中树中的某个节点时,节点值设置到了文本框中, 实现效果如下:

4

主要功能代码如下:

END

全部功能代码

import javaawtEventQueue;

import javaxswingJFrame;

import javaxswingJPanel;

import javaxswingJTree;import javaxswingborderEmptyBorder;

import javaxswingeventTreeSelectionEvent;

import javaxswingeventTreeSelectionListener;

import javaxswingtreeDefaultMutableTreeNode;

import javaxswingJScrollPane;

import javaxswingJTextField;

public class AppDemo extends JFrame {

private JPanel contentPane;

private JTextField textField;

public static void main(String[] args) {

EventQueueinvokeLater(new Runnable() {

public void run() {

try {

AppDemo frame = new AppDemo();

framesetVisible(true);

} catch (Exception e) {

eprintStackTrace();

}

}

});

}

public AppDemo() {

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

setTitle("测试");

contentPane = new JPanel();

contentPanesetBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPanesetLayout(null);

JScrollPane scrollPane = new JScrollPane();

scrollPanesetBounds(30, 20, 196, 217);

contentPaneadd(scrollPane);

final JTree tree = new JTree();

scrollPanesetViewportView(tree); textField = new JTextField();

textFieldsetBounds(252, 35, 172, 27);

contentPaneadd(textField);

treeaddTreeSelectionListener(new TreeSelectionListener() {

public void valueChanged(TreeSelectionEvent e) {

DefaultMutableTreeNode note = (DefaultMutableTreeNode) treegetLastSelectedPathComponent();

String name = notetoString();//获得这个结点的名称

textFieldsetText(name);

}

});

}

}

由于是链式结构,所以很容易实现

找到根的路径,只需要从目标节点一路寻父节点到根即可

至于遍历,其实三种遍历都是一个意思,只是看什么时候标记访问节点而已

从根开始整个遍历过程每一步遵循如下方式:

1若当前节点没有被访问

1)标记访问该节点

2)遍历它的左子树

3)若为先根遍历,输出该节点

2若当前节点已访问

1)如果它有右儿子节点并未被访问,遍历右子树若此时是中根遍历,输出该节点

2)如果它没有右儿子节点或者右儿子已访问,返回遍历该节点的父亲节点若此时为后根遍历,输出该节点若当前节点已为根节点,结束遍历过程

它的算法思想应该是

1,以一指针指向该叶子结点并向上(父结点)找,把父节点入栈(方便输出路径)

2,把指针指向父节点,重复上面的过程,直到节点的父节点为空

3,依次出栈输出信息,路径就出来了

(注:此二叉树的节点应包括父指针,左右指针,数据域)

就这么多吧! 要学习程序,就得自己尝试写,写多了就会了

还有什么不懂的可以给我留言 !!

列表可以用listview控件,如果有多行的话可以用循环,这里只用一行进行说明:

ListViewItem lv = new ListViewItem(); //先实例化

lvText =“”; 一行的第一个元素,双引号里面填写元素

lvSubItemsAdd(); 一行的第二个元素,括号号里面填写元素

lvSubItemsAdd(); 一行的第二个元素,括号号里面填写元素,以此类推

listViewnameItemsAdd(lv); 将实例化添加到listview里面, listViewname为所用控件的名字

以上就是关于在c#中treeview 怎么获取选中节点的子节点全部的内容,包括:在c#中treeview 怎么获取选中节点的子节点、Java Swing JTree怎么获取选中节点值、程序设计 求二叉树上结点的路径及二叉树的三种非递归遍历等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10152885.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存