java的樹形控制元件(1)
阿新 • • 發佈:2019-01-08
很多應用程式都使用樹形分層結構來顯示資料檢視,使用者可以展開或者收縮試圖中國單個子樹。
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(); } }