写一个类EnhancedTreeCellRenderer extends DefaultTreeCellRenderer
改写其方法getTreeCellRendererComponent,如下。其中NodeInformation为自己的存在TreeNode中的类,根据它的一个Field int type来决定显示那个图标。
public class EnhancedTreeCellRenderer extends DefaultTreeCellRenderer{
private Icon root,bean,trade,buss,from;
public EnhancedTreeCellRenderer() {
root = Utilities.getIcon("./images/Host16.gif");
bean = Utilities.getIcon("./images/Bean16.gif");
trade = Utilities.getIcon("./images/Movie16.gif");
buss = Utilities.getIcon("./images/War16.gif");
from = Utilities.getIcon("./images/WebComponent16.gif");
}
public Component getTreeCellRendererComponent(JTree tree,Object value,boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus) {
super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
NodeInformation nodeInfo = (NodeInformation)(node.getUserObject());
int type = nodeInfo.getNodeType();
switch(type) {
case 0 :setIcon(root);
break;
case 5 :setIcon(buss);
break;
case 6 :setIcon(from);
break;
case 18:setIcon(trade);
break;
case 12:
case 13:setIcon(bean);
break;
default :
break;
}

return this;
}
}
再使用
tree.setCellRenderer(new EnhancedTreeCellRenderer());
就一切ok了