JTree,将树的每个节点设置成不同的图标

来源:互联网 发布:imo软件下载 编辑:程序博客网 时间:2024/05/25 16:40
MyDefaultTreeCellRenderer.java 
Java代码  收藏代码
  1. import java.awt.Component;  
  2.   
  3. import javax.swing.ImageIcon;  
  4. import javax.swing.JTree;  
  5. import javax.swing.tree.DefaultMutableTreeNode;  
  6. import javax.swing.tree.DefaultTreeCellRenderer;  
  7.   
  8. /** 
  9.  * 自定义树描述类,将树的每个节点设置成不同的图标 
  10.  * @author RuiLin.Xie - xKF24276 
  11.  * 
  12.  */  
  13. public class MyDefaultTreeCellRenderer extends DefaultTreeCellRenderer  
  14. {  
  15.     /** 
  16.      * ID 
  17.      */  
  18.     private static final long   serialVersionUID    = 1L;  
  19.   
  20.     /** 
  21.      * 重写父类DefaultTreeCellRenderer的方法 
  22.      */  
  23.     @Override  
  24.     public Component getTreeCellRendererComponent(JTree tree, Object value,  
  25.             boolean sel, boolean expanded, boolean leaf, int row,  
  26.             boolean hasFocus)  
  27.     {  
  28.   
  29.         //执行父类原型操作  
  30.         super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,  
  31.                 row, hasFocus);  
  32.   
  33.         setText(value.toString());  
  34.           
  35.         if (sel)  
  36.         {  
  37.             setForeground(getTextSelectionColor());  
  38.         }  
  39.         else  
  40.         {  
  41.             setForeground(getTextNonSelectionColor());  
  42.         }  
  43.           
  44.         //得到每个节点的TreeNode  
  45.         DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;  
  46.           
  47.         //得到每个节点的text  
  48.         String str = node.toString();         
  49.           
  50.         //判断是哪个文本的节点设置对应的值(这里如果节点传入的是一个实体,则可以根据实体里面的一个类型属性来显示对应的图标)  
  51.         if (str == "a")  
  52.         {  
  53.             this.setIcon(new ImageIcon("treeimg/a.GIF"));  
  54.         }  
  55.         if (str == "b")  
  56.         {  
  57.             this.setIcon(new ImageIcon("treeimg/b.GIF"));  
  58.         }  
  59.         if (str == "c")  
  60.         {  
  61.             this.setIcon(new ImageIcon("treeimg/c.GIF"));  
  62.         }  
  63.   
  64.         return this;  
  65.     }  
  66.   
  67. }  


TreeIconDemo.java 
Java代码  收藏代码
  1. import java.awt.BorderLayout;  
  2. import javax.swing.JFrame;  
  3. import javax.swing.JScrollPane;  
  4. import javax.swing.JTree;  
  5. import javax.swing.tree.DefaultMutableTreeNode;  
  6. import javax.swing.tree.DefaultTreeModel;  
  7.   
  8. public class TreeIconDemo extends JFrame  
  9. {  
  10.   
  11.     /** 
  12.      * ID 
  13.      */  
  14.     private static final long   serialVersionUID    = 1L;  
  15.       
  16.     private JTree   tree;  
  17.   
  18.     /** 
  19.      * Launch the application 
  20.      *  
  21.      * @param args 
  22.      */  
  23.     public static void main(String args[])  
  24.     {  
  25.         try  
  26.         {  
  27.             TreeIconDemo frame = new TreeIconDemo();  
  28.             frame.setVisible(true);  
  29.         }  
  30.         catch (Exception e)  
  31.         {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.   
  36.     /** 
  37.      * Create the frame 
  38.      */  
  39.     public TreeIconDemo()  
  40.     {  
  41.         super();  
  42.         setBounds(100100500375);  
  43.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  44.   
  45.         final JScrollPane scrollPane = new JScrollPane();  
  46.         getContentPane().add(scrollPane, BorderLayout.CENTER);  
  47.   
  48.         tree = new JTree();  
  49.         scrollPane.setViewportView(tree);  
  50.   
  51.         //创建数据  
  52.         DefaultTreeModel defaultTreeModel = createModel();  
  53.           
  54.         //设置数据  
  55.         tree.setModel(defaultTreeModel);  
  56.           
  57.         //设置自定义描述类  
  58.         tree.setCellRenderer(new MyDefaultTreeCellRenderer());  
  59.     }  
  60.   
  61.     /** 
  62.      * 创建树节点模型 
  63.      * @return 
  64.      */  
  65.     public DefaultTreeModel createModel()  
  66.     {  
  67.         DefaultMutableTreeNode root = new DefaultMutableTreeNode("a");  
  68.         DefaultMutableTreeNode b = new DefaultMutableTreeNode("b");  
  69.         DefaultMutableTreeNode c = new DefaultMutableTreeNode("c");  
  70.         root.add(b);  
  71.         root.add(c);  
  72.         return new DefaultTreeModel(root);  
  73.     }  
  74.   
  75. }  
0 0
原创粉丝点击