DefaultTreeCellRenderer类中的
setLeafIcon(Icon newIcon)
setOpenIcon(Icon newIcon)
setClosedIcon(Icon newIcon)
setLeafIcon(Icon newIcon)
setOpenIcon(Icon newIcon)
setClosedIcon(Icon newIcon)
调试欢乐多
可是我还是不太明白,我是想根据不同的节点信息给各个节点设置不同的图标,而不是按照是叶子节点或者还是打开或者关闭的节点来设置。
请继续指教!
谢谢。
{
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;
}}