<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    和風細雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

    擴展DefaultTreeCellRenderer創建自己的樹節點渲染器示例。

    通常來說,使用下面的方法確實能改變樹節點的圖標,但靈活性不高。
    // 設定葉節點圖標
    Icon leafIcon = new ImageIcon(TreeViewPanel.class
            .getResource(
    "/leaf.gif"));
    // 設定關閉狀態節點圖標
    Icon closedIcon = new ImageIcon(TreeViewPanel.class
            .getResource(
    "/close.gif"));
    // 設定打開狀態節點圖標
    Icon openIcon = new ImageIcon(TreeViewPanel.class
            .getResource(
    "/open.gif"));

    // 取得樹的渲染器
    DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree
            .getCellRenderer();

    // 設定葉節點圖標
    renderer.setLeafIcon(leafIcon);

    // 設定關閉狀態節點圖標
    renderer.setClosedIcon(closedIcon);

    // 設定打開狀態節點圖標
    renderer.setOpenIcon(openIcon);

    但這樣靈活性不高,如我想每層的圖標都不一樣就不能使用這種方法了,我想要的效果如下:


    這時我們只有擴展DefaultTreeCellRenderer創建自己的樹節點渲染器,我創建的渲染器代碼如下:
    package com.sitinspring.common.render;

    import java.awt.Component;

    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.tree.TreeNode;

    /**
     * 樹節點渲染器
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2008-2-12
     
    */

    public class TreeNodeRenderer extends DefaultTreeCellRenderer{
        
    private static final long serialVersionUID = 8532405600839140757L;
        
        
    // 數據庫圖標,頂層節點用
        private static final Icon databaseIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/database.gif"));
        
        
    // 表圖標,第三層節點用
        private static final Icon tableIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/leaf.gif"));
        
        
    // 表空間關閉狀態圖標,關閉狀態的第二層節點用
        private static final Icon tableSpaceCloseIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/close.gif"));
        
        
    // 表空間關閉狀態圖標,打開狀態的第二層節點用
        private static final Icon tableSpaceOpenIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/open.gif"));
        
        
    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;
            
            
    // 取得路徑
            TreeNode[] paths = node.getPath();
            
            
    // 按路徑層次賦予不同的圖標
            if (paths.length == 3{            
                setIcon(tableIcon);
            }
    else if(paths.length == 2){
                
    // 按展開情況再賦予不同的圖標
                if(expanded){
                    setIcon(tableSpaceOpenIcon);
                }

                
    else{
                    setIcon(tableSpaceCloseIcon);
                }

            }

            
    else if(paths.length == 1){
                setIcon(databaseIcon);
            }

            
            
    return this;        
        }

    }

    使用這個渲染器使用以下代碼就行了:
    tree.setCellRenderer(new TreeNodeRenderer());

    以上。

    posted on 2008-02-22 09:12 和風細雨 閱讀(2840) 評論(0)  編輯  收藏 所屬分類: Swing

    主站蜘蛛池模板: 在线免费观看一级片| 99精品视频在线观看免费播放 | 亚洲av日韩精品久久久久久a | 毛片a级三毛片免费播放| 亚洲国产成人手机在线电影bd| 24小时免费看片| 亚洲精品国产肉丝袜久久| 亚洲成AV人网址| 美女被免费视频网站| 亚洲欧洲久久久精品| 一区二区三区视频免费观看| 久久亚洲国产精品五月天婷| 亚洲人色大成年网站在线观看| 在线观看免费av网站| 亚洲mv国产精品mv日本mv| 成年性午夜免费视频网站不卡| 亚洲人成网站色7799| 免费观看国产精品| yellow视频免费看| 亚洲AV无码成人网站久久精品大| 91成人免费观看| 亚洲色图激情文学| 免费国产在线观看| 99精品视频免费| 亚洲日本乱码一区二区在线二产线| 日本XXX黄区免费看| 亚洲国产精华液2020| 亚洲另类少妇17p| 国产免费阿v精品视频网址| 91亚洲导航深夜福利| 国产1024精品视频专区免费| 国产AV日韩A∨亚洲AV电影| 亚洲午夜福利717| 久久国产免费福利永久| 亚洲AV无码久久精品成人| 国产免费一区二区三区| 亚洲av成人中文无码专区| 亚洲精品国产品国语在线| 大学生高清一级毛片免费| 新最免费影视大全在线播放| 亚洲国产一区二区a毛片|