如何设置jtree 图标

import  java.awt.*;  
import  java.awt.image.BufferedImage;  
import  java.io.*;  
import  javax.imageio.ImageIO;  
import  javax.swing.*;  
import  javax.swing.tree.*;  
 
public  class  TreeIcons  
{  
     BufferedImage[] images;  
 
     public  TreeIcons(BufferedImage[] images)  
     {  
         this .images = images;  
     }  
 
     private  JPanel getContent()  
     {  
         JPanel panel =  new  JPanel( new  GridLayout( 1 , 0 ));  
         panel.add( new  JScrollPane(getLeftTree()));  
         panel.add( new  JScrollPane(getRightTree()));  
         return  panel;  
     }  
 
     private  JTree getLeftTree()  
     {  
         JTree tree = getTree();  
         DefaultTreeCellRenderer renderer =  
         (DefaultTreeCellRenderer)tree.getCellRenderer();  
         // make changes to renderer for this tree  
         // works okay if the size of the new images does  
         // not exceed the size of the default images  
         renderer.setClosedIcon( new  ImageIcon(images[ 0 ]));  
         renderer.setOpenIcon( new  ImageIcon(images[ 1 ]));  
         renderer.setLeafIcon( new  ImageIcon(images[ 2 ]));  
         return  tree;  
     }  
 
     private  JTree getRightTree()  
     {  
         JTree tree = getTree();  
         // set a renderer that allows more fine-grained  
         // control of rendering for varying conditions  
         tree.setCellRenderer( new  IconRenderer(images));  
         return  tree;  
     }  
 
     private  JTree getTree()  
     {  
         String[] birds = {  
             // branches  |<-- child leaf nodes -->|  
             "hawks" ,    "gray" ,     "red-tailed" "rough-legged" ,  
             "falcons" "harrier" "kestrel" ,     "kite" ,   
             "owls" ,     "barred" ,   "saw-whet" ,    "snowy"  
             };  
         DefaultMutableTreeNode root =  new  DefaultMutableTreeNode( "birds" );  
         DefaultMutableTreeNode[] nodes =  new  DefaultMutableTreeNode[birds.length];  
         for ( int  j =  0 ; j < nodes.length; j++)  
             nodes[j] =  new  DefaultMutableTreeNode(birds[j]);  
         for ( int  j =  0 ; j <  9 ; j +=  4 )  
         {  
             root.insert(nodes[j], j %  3 );  
             for ( int  k = j +  1 ; k < j +  4 ; k++)  
             nodes[j].insert(nodes[k], k - j -  1 );  
         }  
         DefaultTreeModel model =  new  DefaultTreeModel(root);  
         return  new  JTree(model);  
     }     
 
     public  static  void  main(String[] args)  throws  IOException  
     {  
         String[] ids = {  "closed16" "open16" "leaf16"  };  
         BufferedImage[] bis =  new  BufferedImage[ids.length];  
         for ( int  j =  0 ; j < bis.length; j++)  
         bis[j] = ImageIO.read( new  File( "images/"  + ids[j] +  ".gif" ));  
         // to make uniform changes for all JTrees in this app  
         //UIManager.put("Tree.closedIcon", new ImageIcon(bis[0]));  
         //UIManager.put("Tree.openIcon",   new ImageIcon(bis[1]));  
         //UIManager.put("Tree.leafIcon",   new ImageIcon(bis[2]));  
         JFrame f =  new  JFrame();  
         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
         f.setContentPane( new  TreeIcons(bis).getContent());  
         f.setSize( 500 , 400 );  
         f.setLocation( 200 , 200 );  
         f.setVisible( true );  
     }  
}  
 
class  IconRenderer  extends  DefaultTreeCellRenderer  
{  
     ImageIcon closedIcon;  
     ImageIcon openIcon;  
     ImageIcon leafIcon;  
 
     public  IconRenderer(BufferedImage[] images)  
     {  
         closedIcon =  new  ImageIcon(images[ 0 ]);  
         openIcon   =  new  ImageIcon(images[ 1 ]);  
         leafIcon   =  new  ImageIcon(images[ 2 ]);  
     }  
 
     public  Component getTreeCellRendererComponent(JTree tree,  
                                                     Object value,  
                                                     boolean  sel,  
                                                     boolean  expanded,  
                                                     boolean  leaf,  
                                                     int  row,  
                                                     boolean  hasFocus)  
     {  
         // start with default behavior  
         super .getTreeCellRendererComponent(tree, value, sel, expanded,   
         leaf, row, hasFocus);  
 
         // customize based on local conditions/state  
         DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;  
         String userObject = (String)node.getUserObject();  
         boolean  isOwl = userObject.equalsIgnoreCase( "owls" );  
         if (isOwl)  
             setIcon(closedIcon);  
         else  if (leaf)  
             setIcon(leafIcon);  
         else  if (expanded)  
             setIcon(openIcon);  
         return  this ;  
     }  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值