String[] strFriend = {{"11","12","13"},
{"21","22","23"},
{"31","32","33"}};
Hashtable ht1 = new Hashtable();   
ht1.put("普通朋友", strFriend[0]);   
ht1.put("好朋友", strFriend[1]);
ht1.put("其他朋友", strFriend[2]);
tree = new JTree(ht1);
知道 str = "22";
怎么更改 22叶子的背景色谢谢

解决方案 »

  1.   

    你需要写TreeCellRenderer,然后tree.setCellRenderer(new MyTreeCellRenderer());给你个例子,这是改结点图标的:
    public class TestTreeCellRenderer extends DefaultTreeCellRenderer{
    @SuppressWarnings("unchecked")
    public Component getTreeCellRendererComponent(JTree tree,Object value,
          boolean sel,
          boolean expanded,
          boolean leaf,int row,
          boolean hasFocus){
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
    NodeUserObject userObject = (NodeUserObject) node.getUserObject();
    Icon nodeIcon = userObject.getIcon();
    String nodeText = userObject.getText();

    this.setText(nodeText);
    this.setIcon(nodeIcon);
    setComponentOrientation(tree.getComponentOrientation());
    this.hasFocus = hasFocus;
    this.selected = sel;

    return this;
    }
    }
      

  2.   

    写过TreeCellRenderer类,实现这个方法
    public Component getTreeCellRendererComponent(JTree tree,Object value,
    boolean sel,
    boolean expanded,
    boolean leaf,int row,
    boolean hasFocus)其中的Object value就是叶子节点的对象 你可以获取这个对象 然后根据它的值来判断
      

  3.   

    AFer198215(甜咖啡) 的代码已经很详细了每次生成树之后,tree.setCellRenderer(new MyTreeCellRenderer());就可以了
      

  4.   

    to :smyl9989(真我的风采) 
    ===========================
    这样可以更改节点的一些状态
    可是,怎么控制其中的一个??我对setCellRenderer 的理解就是所有的节点都变了,
    我只想改变一个或几个
      

  5.   

    smyl9989(真我的风采) ( ) 信誉:100    Blog  2006-12-09 20:46:48  得分: 0  
     
     
       你的理解错了 不是所有的节点都变 它是一个一个节点来刷的 每个节点都可以不一样 你试试就知道了 实践出真知 不要想当然
      
     
    ===================
    谢谢,差不多解决了