1、把图标加入到JTree后,发现节点的Text不见,是怎么回事呀?
2、调用setUserObject方法。我想把一个自己定义的Object类加入到node中,在这个自定义的Object中,我定义了ComponentType成员,定义内容:
   public class JTreeObject{
private String text = null;
private String ComponentType = null;
public JTreeObject(String txt,String type){
text = txt;
ComponentType = type;
}
public String toString(){
return text;
}
public String getComponentType(){
return ComponentType;
}
}
在加入到节点时,setUserObject(new JTreeObject(name,type))//type是一个重要的值,因为我要根据type值来加载不同的图标,下面是定义的一个继承于DefaultTreeCellRenderer的类:
public class CustomCellRenderer extends DefaultTreeCellRenderer{
private ImageIcon componentImage[] = new ImageIcon[3];

public CustomCellRenderer(){

componentImage[0] = new ImageIcon(getClass().getResource("resources/control/band.gif"));

componentImage[1] = new ImageIcon(getClass().getResource("resources/control/label.gif"));

componentImage[2] = new ImageIcon(getClass().getResource("resources/control/dblabel.gif"));

}

public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value; String ComponentType = ((JTreeObject)node.getUserObject()).getComponentType(); //这里报错:类型转换错误
   
if (ComponentType.toLowerCase().equals("A"))

setIcon(componentImage[0]);

else if (ComponentType.toLowerCase().equals("B"))

setIcon(componentImage[1]);

else if (ComponentType.toLowerCase().equals("C"))

setIcon(componentImage[2]);
return this;
}
}
当进入程序时就报转换错误,为什么?我应该怎么做?我在加入节点时的做法是:
myTree.setCellRenderer(new CustomCellRenderer()); DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode();
JTreeObject treeobject = new JTreeObject(name,type);
treeNode.setUserObject(treeobject);
RootNode.add(treeNode);//增加子节点请兄弟们解救一下,先谢过了!!!!!!!!!!

解决方案 »

  1.   

    String ComponentType = ((JTreeObject)node.getUserObject()).getComponentType(); //这里报错:类型转换错误看看JTreeObject.getComponentType()返回的值是String类型吗?不是吧!
    要不这样试试:
    String ComponentType = ((JTreeObject)node.getUserObject()).getComponentType().toString();
      

  2.   

    getComponentType返回的就是一个String类型呀。
    我刚试了一下,还是报错。
      

  3.   

    String ComponentType = ((JTreeObject)(node.getUserObject())).getComponentType(); 
    再多加一层括弧,可能事运算符优先级的问题
      

  4.   

    应该事你把node转换为JTreeObject的时候出错了,才注意到
      

  5.   

    是呀我是先转换时就出错了。
    setUserObject中参数Object应该可以是自定义的吧?