您的位置:首页 > 产品设计 > UI/UE

JAVA GUI学习 - JTree树结构组件学习 ***

2013-09-22 11:12 369 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: