很多应用程序都使用树形分层结构来显示数据视图,用户可以展开或者收缩试图中国单个子树。
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();
}
}