当前位置:编程学习 > JAVA >>

java JTree小结

1、初始树的节点是否展开问题
我们知道树的初始化代码如下:
[java]  
DefaultMutableTreeNode root = new DefaultMutableTreeNode();   
JTree tree = new JTree(new DefaultTreeModel(root));  
root.add(new DefaultMutableTreeNode("node1"));  
root.add(new DefaultMutableTreeNode("node2"));  
root.add(new DefaultMutableTreeNode("node3"));  
root.add(new DefaultMutableTreeNode("node4"));  
root.add(new DefaultMutableTreeNode("node5"));  
这个时候树默认是收缩的。
若是先给root节点增加孩子节点,再生成树,则会是展开的,如下这般:
[java]  
DefaultMutableTreeNode root = new DefaultMutableTreeNode();           
root.add(new DefaultMutableTreeNode("node1"));  
root.add(new DefaultMutableTreeNode("node2"));  
root.add(new DefaultMutableTreeNode("node3"));  
root.add(new DefaultMutableTreeNode("node4"));  
root.add(new DefaultMutableTreeNode("node5"));  
JTree tree = new JTree(new DefaultTreeModel(root));  
 
2、改变节点的图标:
我们生成节点的时候若不指定CellRenderer,则默认使用的是DefaultTreeCellRenderer,它在渲染节点的时候使用的是系统默认的,就如我们最开始生成的那般。若要改变节点的图标或者文字说明,就要重写这个类。
[java] 
public class ShorenNodeRenderer extends DefaultTreeCellRenderer{  
      
    private static final long serialVersionUID = 1L;  
  
    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;  
        //StringValue是value调用toString()后的转来的描述性文字,所以在节点中包装的  
        //对象应自己重写toString方法来实现自己想要的结果       
    //  String stringValue = tree.convertValueToText(value, sel, expanded, leaf, row, hasFocus);   
    //  setText(stringValue);  
        //与上述方法等价  
        if(!node.isRoot())  
        {  
            TargetMsg msg = (TargetMsg)node.getUserObject();  
            setText(msg.getName());  
            setIcon(null);  
        }  
          
        return this;    
            
        }//end of getTreeCellRendererComponent    
}  
最重要的一句是
[java] 
DefaultMutableTreeNode node=(DefaultMutableTreeNode)value;  
得到node,然后根据node的基本信息判断节点的类别,然后给予相应的设置(设置图片和文字说明)。
 
3、分支线与根节点的显示:
[java]   www.zzzyk.com
tree.setShowsRootHandles(true);  //显示前面的分支线  
tree.setRootVisible(false);      //不显示根节点  
设置前后对比如下:
            
\            \
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,