有不同的办法:
1.利用UIManager类,
Icon openIcon = new ImageIcon("open.gif");
Icon closeIcon = new ImageIcon("close.gif");
Icon leafIcon= new ImageIcon("leaf.gif");UIManager.put("Tree.closeIcon",closeIcon);
UIManager.put("Tree.openIcon",openIcon);
UIManager.put("Tree.leafIcon",leafIcon);JTree tree = new JTree();
//注意,UIManager必须在new被new出来之前。
//这样是设置了整个缺省值。不够灵活
2.利用TreeCellRenderer。
这里又可以分为两个办法,第一,利用
DefaultTreeCellRenderer renderer =new DefaultTreeCellRenderer ();
renderer.setClosedIcon(closeIcon);
renderer.setOpenIcon(openIcon);
renderer.setLeafIcon(leafIcon);
renderer.setFont(new Font());//自己定义字体这样比较简单。
第二。如果想自己时刻控制tree的图标,或者说tree的图标希望能动态根据情况来改变的话,需要自己扩展DefaultTreeCellRenderer,
实现getTreeCellRendererComponent()
方法,这里可以根据tree的具体情况,来实现图标,字体颜色,甚至节点的绘制方式。比如你在树节点上放置一个checkBox之类等等。总之,看看java2图形技术卷II swing.
第21章,有详细说明.

解决方案 »

  1.   

    补充2.(上面有点省略了)
    JTree tree = new JTree();DefaultTreeCellRenderer renderer =new DefaultTreeCellRenderer ();
    renderer.setClosedIcon(closeIcon);
    renderer.setOpenIcon(openIcon);
    renderer.setLeafIcon(leafIcon);
    renderer.setFont(new Font());//自己定义字体tree.setCellRenderer(renderer);//这句完成设置
    这样就把renderer变量作为tree的绘制器了.