java的树形控件(1)

很多应用程序都使用树形分层结构来显示数据视图,用户可以展开或者收缩试图中国单个子树。

JTree的构造函数如下:

1)JTree()          建立一个系统默认的树

2)JTree(Hashtable value)        利用Hashtable建立树,不显示根节点

3)JTree(Object[ ] value)        利用数组Object[ ]建立树,不显示跟节点

4)JTree(TreeNode root)       应用节点TreeNode建立树

5)JTree(TreeNode root,bool askAllowsChildren )   应用节点TreeNode建立树,并确定是否允许有子节点


import javax.swing.*;

public class TreeSimple extends JFrame{
	public TreeSimple(){
		JTree tree = new JTree();
		add(tree);
		setSize(400,400);
		setTitle("JTree用法");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public static void main(String[] args){
		new TreeSimple();
	}
}



/*******************************************
 * 程序文件名称:TreeDemo.java
 * 功能:处理节点事件
 *******************************************/
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

class Apptree extends JFrame implements TreeSelectionListener{
	JTree tree = null;
	JTextArea text=new JTextArea(20,20);
	Apptree(){
		setVisible(true);
		setBounds(70,80,200,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//定义根节点
		DefaultMutableTreeNode root=new DefaultMutableTreeNode("人力资源系统");
		
		DefaultMutableTreeNode t1=new DefaultMutableTreeNode("人事档案");
		DefaultMutableTreeNode t2=new DefaultMutableTreeNode("薪资考勤");
		
		DefaultMutableTreeNode t1_1=new DefaultMutableTreeNode("人员基本信息");
		DefaultMutableTreeNode t1_2=new DefaultMutableTreeNode("业绩考核");
		DefaultMutableTreeNode t2_1=new DefaultMutableTreeNode("考勤管理");
		DefaultMutableTreeNode t2_2=new DefaultMutableTreeNode("计件工资");
		
		root.add(t1);
		root.add(t2);
		
		t1.add(t1_1);
		t1.add(t1_2);
		t2.add(t2_1);
		t2.add(t2_2);
		tree=new JTree(root);
		JScrollPane scrollpane = new JScrollPane(text);//文本区放在带滚动带的面板中
		JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,tree,scrollpane);
		tree.addTreeSelectionListener(this);
		add(splitpane);
	}
	public void valueChanged(TreeSelectionEvent e){//定义节点事件
		if(e.getSource()==tree){
			DefaultMutableTreeNode node=
					(DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); //定义被选中的节点
			if(node.isLeaf()){
				String str=node.toString();
				if(str.equals("人员基本信息")){
					text.setText(str+"\n显示信息1");
				}
				else if(str.equals("业绩考核")){
					text.setText(str+"\n显示信息2");
				}
				else if(str.equals("考勤管理")){
					text.setText(str+"\n显示信息3");
				}
				else if(str.equals("计件工资")){
					text.setText(str+"\n显示信息4");
				}
				else{
					text.setText(node.getUserObject().toString());
				}
			}	
		}
	}
}

public class TreeDemo {
	public static void main(String[] args){
		Apptree win=new Apptree();
		win.pack();
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值