java 实现树形结构_java 实现树形结构

packagetree;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Font;importjava.awt.Image;importjavax.swing.ImageIcon;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JScrollPane;importjavax.swing.JTree;importjavax.swing.event.TreeSelectionEvent;importjavax.swing.event.TreeSelectionListener;importjavax.swing.tree.DefaultMutableTreeNode;importjavax.swing.tree.DefaultTreeCellRenderer;importjavax.swing.tree.DefaultTreeModel;importjavax.swing.tree.TreeSelectionModel;public class treenode extends JFrame implementsTreeSelectionListener{

JLabel jl;publictreenode()

{super("树形结构");//创建根节点和子节点

DefaultMutableTreeNode root=new DefaultMutableTreeNode("文本编辑器");

DefaultMutableTreeNode node1=new DefaultMutableTreeNode("文件");

DefaultMutableTreeNode node2=new DefaultMutableTreeNode("编辑");//利用根节点创建treemodel

DefaultTreeModel treemodel=newDefaultTreeModel(root);//插入子节点

treemodel.insertNodeInto(node1, root, root.getChildCount());

treemodel.insertNodeInto(node2, root, root.getChildCount());//创建node1的子节点并插入

DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode("打开");

treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());

leafnode=new DefaultMutableTreeNode("保存");

treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());

leafnode=new DefaultMutableTreeNode("另存为");

treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());

leafnode=new DefaultMutableTreeNode("关闭");

treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());//创建node2的子节点并插入

leafnode=new DefaultMutableTreeNode("剪切");

treemodel.insertNodeInto(leafnode, node2, node2.getChildCount());

leafnode=new DefaultMutableTreeNode("复制");

treemodel.insertNodeInto(leafnode, node2, node2.getChildCount());

leafnode=new DefaultMutableTreeNode("粘贴");

treemodel.insertNodeInto(leafnode, node2, node2.getChildCount());//创建树对象

JTree tree =newJTree(treemodel);

tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

tree.addTreeSelectionListener(this);

tree.setRowHeight(20);//创建节点绘制对象

DefaultTreeCellRenderer cell=(DefaultTreeCellRenderer)tree.getCellRenderer();//设置字体

cell.setFont(new Font("Serif",Font.PLAIN,14));

cell.setBackgroundNonSelectionColor(Color.white);

cell.setBackgroundSelectionColor(Color.LIGHT_GRAY);

cell.setForeground(Color.red);

cell.setIcon(new ImageIcon("/image/folder.jpg"));//设置选中和不选中时文字的变化颜色

cell.setTextNonSelectionColor(Color.black);

cell.setTextNonSelectionColor(Color.black);this.add(newJScrollPane(tree));

jl=new JLabel("你当前选择的节点为:",JLabel.CENTER);

jl.setFont(new Font("Serif",Font.PLAIN,14));this.add(jl,BorderLayout.SOUTH);this.setSize(400, 400);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}public static voidmain(String[] args) {//TODO Auto-generated method stub

treenode t=newtreenode();

}

@Overridepublic voidvalueChanged(TreeSelectionEvent e) {//TODO Auto-generated method stub

JTree tree=(JTree)e.getSource();//获取当前选中的节点

DefaultMutableTreeNode selectnode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();

String nodename=selectnode.toString();

jl.setText("您当前选择的节点为:"+nodename);

}

}

$(function(){ $.fn.extend({ SimpleTree:function(options){ //初始化参数 var option = $.extend({ click:function(a){ } },options); option.tree=this; /* 在参数对象中添加对当前菜单树的引用,以便在对象中使用该菜单树 */ option._init=function(){ /* * 初始化菜单展开状态,以及分叉节点的样式 */ this.tree.find("ul ul").hide(); /* 隐藏所有子级菜单 */ this.tree.find("ul ul").prev("li").removeClass("open"); /* 移除所有子级菜单父节点的 open 样式 */ this.tree.find("ul ul[show='true']").show(); /* 显示 show 属性为 true 的子级菜单 */ this.tree.find("ul ul[show='true']").prev("li").addClass("open"); /* 添加 show 属性为 true 的子级菜单父节点的 open 样式 */ }/* option._init() End */ /* 设置所有超链接不响应单击事件 */ this.find("a").click(function(){ $(this).parent("li").click(); return false; }); /* 菜单项 接受单击 */ this.find("li").click(function(){ /* * 当单击菜单项 * 1.触发用户自定义的单击事件,将该 标签中的第一个超链接做为参数传递过去 * 2.修改当前菜单项所属的子菜单的显示状态(如果等于 true 将其设置为 false,否则将其设置为 true) * 3.重新初始化菜单 */ option.click($(this).find("a")[0]); /* 触发单击 */ /* * 如果当前节点下面包含子菜单,并且其 show 属性的值为 true,则修改其 show 属性为 false * 否则修改其 show 属性为 true */ /* if($(this).next("ul").attr("show")=="true"){ $(this).next("ul").attr("show","false"); }else{ $(this).next("ul").attr("show","true"); }*/ /* 初始化菜单 */ option._init(); }); /* 设置所有父节点样式 */ this.find("ul").prev("li").addClass("folder"); /* 设置节点“是否包含子节点”属性 */ this.find("li").find("a").attr("hasChild",false); this.find("ul").prev("li").find("a").attr("hasChild",true); /* 初始化菜单 */ option._init(); }/* SimpleTree Function End */ }); });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值