[Java] Swing Tree component JTree
A simple style
TreeNodeDemo. java <喎?http: www.bkjia.com kf ware vc " target="_blank" class="keylink"> VcD4NCjxwcmUgY2xhc3M9 "brush: java;"> Package com. sjf; import javax. swing. JFrame; import javax. swing. JTree; import javax. swing. event. treeSelectionEvent; import javax. swing. event. treeSelectionListener; import javax. swing. tree. defaultMutableTreeNode; public class TreeNodeDemo {public static void main (String [] args) {// create a tree node without parent and child nodes but with child nodes, and uses the specified user object to initialize it. // Public DefaultMutableTreeNode (Object userObject) DefaultMutableTreeNode group1 = new DefaultMutableTreeNode ("software Department"); TreeNode node1 = new TreeNode (); node1.setName ("Wang Yu "); node1.setNickName ("flying all over the sky"); group1.add (new DefaultMutableTreeNode (node1); TreeNode node2 = new TreeNode (); node2.setName ("Chen Meng"); node2.setNickName ("dream "); group1.add (new DefaultMutableTreeNode (node2); TreeNode node3 = new TreeNode (); node3.setName ("Shangguan feer"); node3.setNickName ("feer "); group1.add (new feature (node3); DefaultMutableTreeNode group2 = new DefaultMutableTreeNode ("sales"); TreeNode node4 = new TreeNode (); node4.setName ("Shangguan Waner "); node4.setNickName ("Wan Er"); group2.add (new DefaultMutableTreeNode (node4); TreeNode node5 = new TreeNode (); node5.setName ("Shangguan qiaoer"); node5.setNickName ("Qiao Er "); group2.add (new DefaultMutableTreeNode (node5); DefaultMutableTreeNode top = new DefaultMutableTreeNode ("Staff Management"); top. add (group1); top. add (group2); final JTree tree = new JTree (top); JFrame f = new JFrame ("JTreeDemo"); f. add (tree); f. setSize (300,300); f. setVisible (true); f. setdefaclocloseoperation (JFrame. EXIT_ON_CLOSE); // Add the selected event tree. addTreeSelectionListener (new TreeSelectionListener () {@ Override public void valueChanged (TreeSelectionEvent e) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree. getLastSelectedPathComponent (); if (node = null) {return;} // if Object object = node. getUserObject (); TreeNode user = (TreeNode) object; System. out. println ("You selected:" + user. toString ());}});}}
TreeNode. java
Package com. sjf; public class TreeNode {private String nickName = ""; private String name = ""; private String phone = ""; private int age; public String getName () {return name;} public void setName (String name) {this. name = name;} public String getNickName () {return nickName;} public void setNickName (String nickName) {this. nickName = nickName;} public String getPhone () {return phone;} public void setPhone (String phone) {this. phone = phone;} public int getAge () {return age;} public void setAge (int age) {this. age = age;} // focus on toString. The displayed Text of the node is toString public String toString () {return name + "[" + nickName + "]" ;}}
2. Icon Style
TreeNode. java
Package com. sjf; public class TreeNode {private String nickName = ""; private String name = ""; private String phone = ""; private int age; private String imagePath = ""; public String getImagePath () {return imagePath;} public void setImagePath (String imagePath) {this. imagePath = imagePath;} public String getName () {return name;} public void setName (String name) {this. name = name;} public String getNickName () {return nickName;} public void setNickName (String nickName) {this. nickName = nickName;} public String getPhone () {return phone;} public void setPhone (String phone) {this. phone = phone;} public int getAge () {return age;} public void setAge (int age) {this. age = age;} // focus on toString. The displayed Text of the node is toString public String toString () {return name + "[" + nickName + "]" ;}}
TreeCellRenderer. java
Package com. sjf; import java. awt. component; import javax. swing. imageIcon; import javax. swing. JTree; import javax. swing. tree. defaultMutableTreeNode; import javax. swing. tree. defaultTreeCellRenderer;/** custom tree description class, set each node of the tree to a different icon **/public class TreeCellRenderer extends defatretreecellrenderer {private static final long serialVersionUID = 1L; /*** Override the DefaultTreeCellRenderer method of the parent class */@ Override public Component getTreeCellRendererComponent (JTree tree, Object value, boolean selected, boolean expanded, boolean isLeaf, int row, boolean hasFocus) {// select if (selected) {setForeground (getTextSelectionColor ();} else {setForeground (getTextNonSelectionColor ();} // TreeNode DefaultMutableTreeNode treeNode = (partial) value; object obj = treeNode. getUserObject (); if (obj instanceof TreeNode) {TreeNode node = (TreeNode) obj; DefaultTreeCellRenderer tempCellRenderer = new defatretreecellrenderer (); tempCellRenderer. setLeafIcon (new ImageIcon (node. getImagePath (); return tempCellRenderer. getTreeCellRendererComponent (tree, node. toString (), selected, expanded, true, row, hasFocus);} else if (obj instanceof String) {String text = (String) obj; DefaultTreeCellRenderer tempCellRenderer = new DefaultTreeCellRenderer (); tempCellRenderer. setOpenIcon (new ImageIcon ("Image/open.jpg"); tempCellRenderer. setClosedIcon (new ImageIcon ("Image/close.jpg"); return tempCellRenderer. getTreeCellRendererComponent (tree, text, selected, expanded, false, row, hasFocus);} return super. getTreeCellRendererComponent (tree, value, selected, expanded, isLeaf, row, hasFocus );}}
TreeNodeDemo. java
Package com. sjf; import javax. swing. JFrame; import javax. swing. JTree; import javax. swing. event. treeSelectionEvent; import javax. swing. event. treeSelectionListener; import javax. swing. tree. defaultMutableTreeNode; public class TreeNodeDemo {public static void main (String [] args) {// create a tree node without parent and child nodes but with child nodes, and uses the specified user object to initialize it. // Public DefaultMutableTreeNode (Object userObject) DefaultMutableTreeNode group1 = new DefaultMutableTreeNode ("software Department"); TreeNode node1 = new TreeNode (); node1.setName ("Wang Yu "); node1.setNickName ("flying all over the sky"); node1.setImagePath ("Image/1.jpg"); group1.add (new region (node1); TreeNode node2 = new TreeNode (); node2.setName (" Chen Meng "); node2.setNickName ("dream"); node2.setImagePath ("Image/2.jpg"); group1.add (new feature (node2); TreeNode node3 = new TreeNode (); node3.setName (" Shangguan feer "); node3.setNickName (" Er"); node3.setImagePath ("Image/3.jpg"); group1.add (new feature (node3); DefaultMutableTreeNode group2 = new DefaultMutableTreeNode (" Sales Department "); treeNode node4 = new TreeNode (); node4.setName ("Shangguan Waner"); node4.setNickName ("Wan Er"); node4.setImagePath ("Image/4.jpg"); group2.add (new region (node4 )); treeNode node5 = new TreeNode (); node5.setName ("Shangguan qiaoer"); node5.setNickName ("qiaoer"); node5.setImagePath ("Image/5.jpg"); group2.add (new feature (node5 )); defaultMutableTreeNode root = new DefaultMutableTreeNode (); root. add (group1); root. add (group2 ); // ++ ++ ++ final JTree = new JTree (root ); tree. setCellRenderer (new TreeCellRenderer (); tree. putClientProperty ("JTree. lineStyle "," None "); tree. setRootVisible (false); JFrame frame = new JFrame ("JTreeDemo"); frame. add (tree); frame. setSize (300,300); frame. setVisible (true); frame. setdefaclocloseoperation (JFrame. EXIT_ON_CLOSE ); // ++ ++ +++ ++ // Add the selected event tree. addTreeSelectionListener (new TreeSelectionListener () {@ Override public void valueChanged (TreeSelectionEvent e) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree. getLastSelectedPathComponent (); if (node = null) {return;} // if Object object = node. getUserObject (); if (object instanceof TreeNode) {TreeNode user = (TreeNode) object; System. out. println ("You clicked:" + user. toString ();} else if (object instanceof String) {String text = (String) object; System. out. println ("You clicked:" + text );}}});}}