DefaultTreeCellRenderer类中的
setLeafIcon(Icon newIcon) 
setOpenIcon(Icon newIcon) 
setClosedIcon(Icon newIcon) 

解决方案 »

  1.   

    谢谢LoveRose兄的指教!
    可是我还是不太明白,我是想根据不同的节点信息给各个节点设置不同的图标,而不是按照是叶子节点或者还是打开或者关闭的节点来设置。
    请继续指教!
    谢谢。
      

  2.   

    大概看看不明白去找本Swing关于JTree的书看看public class CellTreeCellRenderer extends DefaultTreeCellRenderer
    {
    public  Component getTreeCellRendererComponent(JTree tree,
                                                      Object value,
                                                      boolean sel,
                                                      boolean expanded,
                                                      boolean leaf,
                                                      int row,
                                                      boolean hasFocus)
    {
            try
                {
                        super.getTreeCellRendererComponent( tree, value, sel, expanded, leaf, row, hasFocus);
                        //set the icon if the node has
                         if(value == null) return this;
                        DefaultMutableTreeNode node=(DefaultMutableTreeNode)value;
                        if(node.isLeaf()&&node.getLevel()==1)
                        {
                            Icon icon = getClosedIcon();
                            setIcon(icon);
                            return this;
                        }
                        Object objvec=node.getUserObject();
                        Vector vector;
                        if(objvec instanceof Vector)
                        {
                         vector=(Vector)objvec;
                         Object pobj=vector.get(0);
                         LocationInfo ploc=(LocationInfo)pobj;
                         //System.out.println("cell"+ploc);
                         UiTreeObj uobj=UiNodeManager.instance().getObject(ploc);
                         Object obj=UiNodeManager.instance().getEntity(ploc);
                         UiEntityParts ppobj=(UiEntityParts)obj;
                         //Object obj=node.getUserObject();
                         if(ppobj.getType().equals(PartsType.PGN_CELL))
                         {
                         LocationInfo loc= ((UiTreeObj)uobj).getLocation();
                          setText(ppobj.getName());
                         if (vector.size()>1)
                        {
                           setForeground(Color.red);
                         }
                         setIcon(null);
                      }
              else
              {
                         return this;
                        }
                }
             }
             catch(Exception e)
             {
                  GUILog.OutputLog(e);
             }
            return this;
    }}