1. 程式人生 > >java的樹形控制元件(1)

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();
	}
}