<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 和風細雨 閱讀(2830) 評論(0)  編輯  收藏 所屬分類: Swing

    主站蜘蛛池模板: 国产一级a毛一级a看免费人娇| 亚洲熟妇无码AV| 欧洲人成在线免费| 亚洲乱码中文字幕久久孕妇黑人| 黄色a三级三级三级免费看| 国产成人精品高清免费| 亚洲av永久无码天堂网| 国产精品国产午夜免费福利看| 亚洲欧美精品午睡沙发| 超pen个人视频国产免费观看| 无码亚洲成a人在线观看| 午夜网站免费版在线观看| 亚洲AV无码一区二区大桥未久| 日本19禁啪啪无遮挡免费动图| 国产亚洲综合视频| 亚洲午夜精品第一区二区8050| 韩日电影在线播放免费版| 亚洲日产韩国一二三四区| 国产午夜精品久久久久免费视 | 亚洲小说图片视频| 国产精品成人免费一区二区 | 最近2019年免费中文字幕高清| 亚洲白色白色在线播放| 成视频年人黄网站免费视频| 亚洲欧美乱色情图片| 亚洲性久久久影院| 久久九九全国免费| 久久亚洲国产成人影院| 免费夜色污私人影院在线观看| 你懂的网址免费国产| 亚洲国产成人精品无码区在线秒播 | 全部免费毛片在线播放| 精品国产成人亚洲午夜福利| 国产乱弄免费视频| 日韩免费在线视频| 亚洲欧美国产国产一区二区三区| 77777亚洲午夜久久多人| 久久久久久精品免费看SSS| 男女猛烈xx00免费视频试看| 亚洲无线电影官网| 国产zzjjzzjj视频全免费|