public class JTreeKnow extends JFrame
{
public JTreeKnow()
{
this.setBounds(300, 100, 400, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建树的第一种方式
JTree jTree = new JTree();
this.add(jTree); //创建树的第二种方式:推荐
//创建根节点
DefaultMutableTreeNode defaultMutableTreeNode = new DefaultMutableTreeNode("根节点");
//创建树模型
DefaultTreeModel defaultTreeModel = new DefaultTreeModel(defaultMutableTreeNode);
//创建树
JTree jTree2 = new JTree(defaultTreeModel);
//创建滚动面板
JScrollPane jScrollPane = new JScrollPane(jTree2);
this.add(jScrollPane);
//添加子节点
for(int i = 1; i < 3; i++)
{
DefaultMutableTreeNode defaultMutableTreeNode2 = new DefaultMutableTreeNode("第一阶子节点"+i);
for(int j = 1; j < 4; j++)
{
DefaultMutableTreeNode defaultMutableTreeNode3 = new DefaultMutableTreeNode("第二阶子节点"+i+j);
defaultMutableTreeNode2.add(defaultMutableTreeNode3);
}
defaultMutableTreeNode.add(defaultMutableTreeNode2);
} //获取根节点
DefaultMutableTreeNode defaultMutableTreeNode2 = (DefaultMutableTreeNode) defaultTreeModel.getRoot();
//根据父节点索引+子节点索引找到节点
DefaultMutableTreeNode defaultMutableTreeNode3 = (DefaultMutableTreeNode) defaultTreeModel.getChild(defaultMutableTreeNode2, 0);
System.out.println(defaultMutableTreeNode3);
//获取某一节点到顶级节点(根节点)之间所有的节点 //获取某节点所对应的阶层
int level = defaultMutableTreeNode3.getLevel(); //刷新重新绘制节点数(重要)
defaultTreeModel.reload();
//获取所有节点:迭代器
Enumeration<DefaultMutableTreeNode> nodes = defaultMutableTreeNode.children();
//判断某节点是否是根节点、页节点isLeaf()
((DefaultMutableTreeNode)defaultMutableTreeNode.getChildAt(0)).isRoot(); /*******************************************监听器****************************************/
//
/***************JTree的监听器**************/
//绑定选项监听器
//某节点被选中了
jTree2.addTreeSelectionListener(new TreeSelectionListener()
{
@Override
public void valueChanged(TreeSelectionEvent e)
{
// TODO Auto-generated method stub
// System.out.println("节点被选择");
//获取选中的treePath,treePath即根节点至所选节点的集合
// System.out.println(tree.getSelectionPath());
// //获取节点集合的数量
// System.out.println(tree.getSelectionPath().getPathCount());
// //获取选中的节点对象
// System.out.println((DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent()); System.out.println(e.getPath().getLastPathComponent());
}
});
//为降低程序的错误率,监听器addTreeWillExpandListener和监听器addTreeExpansionListener通常会同时搭配使用,
//以确保程序菜单正常、正确打开
//绑定数结展开折叠的监听器
//节点被展开了
jTree2.addTreeExpansionListener(new TreeExpansionListener()
{
/**
* 展开事件
*/
@Override
public void treeExpanded(TreeExpansionEvent event)
{
// TODO Auto-generated method stub
System.out.println(event.getPath().getLastPathComponent()+" 被展开");
}
/**
* 折叠
*/
@Override
public void treeCollapsed(TreeExpansionEvent event)
{
// TODO Auto-generated method stub
System.out.println(event.getPath().getLastPathComponent()+" 被折叠");
}
}); //绑定树结构将要执行展开和折叠的监听器
//节点将被展开:通常使用本方法对节点进行动态的显示控制
jTree2.addTreeWillExpandListener(new TreeWillExpandListener()
{
/**
* 将被展开的事件
*/
@Override
public void treeWillExpand(TreeExpansionEvent event)
throws ExpandVetoException
{
// TODO Auto-generated method stub
System.out.println(event.getPath().getLastPathComponent()+" 将被展开"); }
/**
* 将被折叠的事件
*/
@Override
public void treeWillCollapse(TreeExpansionEvent event)
throws ExpandVetoException
{
// TODO Auto-generated method stub
System.out.println(event.getPath().getLastPathComponent()+" 将被折叠");
}
});
}
public static void main(String[] args)
{
JTreeKnow jTreeKnow = new JTreeKnow();
jTreeKnow.setVisible(true);
}
}

JAVA GUI学习 - JTree树结构组件学习 ***的更多相关文章

  1. Java GUI编程4---标签组件JLabel

    Java GUI编程4---标签组件JLabel 2018年06月11日 22:06:58 蓝蓝223 阅读数 12103更多 个人分类: Java书籍摘抄 所属专栏: Java Swing图形界面 ...

  2. JAVA GUI学习 - JOptionPane对话框组件学习

    /** * 对话框 - 学习笔记 * @author Wfei * */ public class JoptionPaneKnow extends JFrame { public JoptionPan ...

  3. JAVA GUI学习 - JTable表格组件学习_C ***

    /** * JTable高级应用 * @author Wfei * */ public class JTableKnow_C extends JFrame { JTable jTable; MyJMe ...

  4. JAVA GUI学习 - JTable表格组件学习_A ***

    public class JTableKnow_A extends JFrame { public JTableKnow_A() { this.setBounds(300, 100, 400, 300 ...

  5. JAVA GUI学习 - JTabbedPane选项卡组件学习

    public class JTabbedPaneKnow extends JFrame { JTabbedPane jTabbedPane; JPanel jPanelRed; JPanel jPan ...

  6. Informatic学习总结_day03_update组件学习

  7. C# BackgroundWorker组件学习

    C# BackgroundWorker组件学习  C# BackgroundWorker组件学习 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用Ba ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. Java GUI学习,贪吃蛇小游戏

    JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...

随机推荐

  1. sql 练习(3)

    1.打印九九乘法表 ) ,exp)) A, ,exp))B, ,exp))C, ,exp))D, ,exp))E, ,exp))F, ,exp))G, ,exp))H, ,exp))I from ( ...

  2. BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )

    考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...

  3. Ubuntu的快捷键

    正如大家都知道的那样,Ubuntu的终端的Terminal能快捷的操作该linux系统,减少鼠标的使用.(vim党,尽量避免使用鼠标) 在Ubuntu中,终端的快捷键为(大小写无关的): Ctrl + ...

  4. Log4net 自定义字段到数据库

    今天要求做个log4net自定义字段到数据库,在网上找了好多例子,都运行不成功.最后找了个国外的,很简单的就解决了. log4net它已经定义的字段有 <commandText value=&q ...

  5. Redis是什么

    Redis是什么 Redis是什么,首先Redis官网上是这么说的:A persistent key-value database with built-in net interface writte ...

  6. JSP page include taglib

    page include taglib 语法:<%@ 指令名称 属性=值 属性=值 -%> ------------------- page 1.language 默认值java 2.ex ...

  7. 关于 rand() 函数返回值的值域的疑问

    <C语言参考手册>中关于 rand() 函数有如下描述. (1)rand() 函数的原型 int rand(void); (2)连续调用 rand 将返回 0 到 int 类型的最大可表示 ...

  8. 动态更换view类的背景----StateListDrawable的应用

    StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...

  9. 开源搜索技术—Lucene、Solr

    Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引 ...

  10. Linux-NGINX 能否添加P3P头,如何添加。 - 德问:编程社交问答

    Linux-NGINX 能否添加P3P头,如何添加. - 德问:编程社交问答   您的投票让 杜鑫 声誉值增加5分. 支持投票,不仅能让提问用户获得声誉值,让好的问题有更多的曝光,更能帮助社区筛选出好 ...