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. 展开BOM并使用最终用量的算法(转载)

    本文系转载子ITPUB,如果有侵犯您权益的地方,烦请及时的告知与我,我即刻将停止侵权行为: 网址:http://www.itpub.net/thread-1020586-1-1.html http:/ ...

  2. mysql查询结果写入文件

    注:转自csdn zuyi532 方法1: shell> mysql -uroot -proot -h localhost xxx库 -e " select * from xxx表 l ...

  3. C++中的unordered_map

    1.简介 随着C++0x标准的确立,C++的标准库中也终于有了hash table这个东西.很久以来,STL中都只提供<map>作为存放对应关系的容器,内部通常用红黑树实现,据说原因是二叉 ...

  4. java附件上传下载磁盘版

    ACTION public class UploadAction extends BaseAction { private static final long serialVersionUID = 1 ...

  5. php错误 mysql_query():supplied argument is not a valid MySQL result resource

    出现这种错误,原因是出现该错误的函数的参数出现了问题 参数出现问题有多种情况: 1.sql查询语句有问题,可能多了一个逗号,少了一个逗号,多了括号之类的: 2.与数据库连接的参数有问题,用户名.密码. ...

  6. Maven 添加Jetty

        <build>         <finalName>springmvc</finalName>         <plugins>       ...

  7. cocos2d-x 多点触控实现缩放及相关问题的解决方法

    首先,来看下代码: 声明文件: #ifndef __loading__MoreTouches__ #define __loading__MoreTouches__ #include <iostr ...

  8. move.js

    function startMove(obj,json,fn){ var flag=true;//标志所有运动是否到达目标值 clearInterval(obj.timer); obj.timer=s ...

  9. 一步一步学c#(五):泛型

    泛型 性能 泛型的一个重要的优点是性能.system.collections和system.collections.generic名称空间的泛型和非泛型集和类.对值类型使用非泛型集合类,在把值类型转换 ...

  10. Uploadif稍做扩展使用

    文章出自Uploadify扩展配置使用http://www.wuyinweb.com/doc/52/57.aspx 在做项目中涉及多文件上传,经过筛选,选择了Uploaidify,但还涉及一个问题,就 ...