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

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

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

    和風細雨

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

    擴展DefaultTreeCellRenderer創(chuàng)建自己的樹節(jié)點渲染器示例。

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

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

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

    // 設定關閉狀態(tài)節(jié)點圖標
    renderer.setClosedIcon(closedIcon);

    // 設定打開狀態(tài)節(jié)點圖標
    renderer.setOpenIcon(openIcon);

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


    這時我們只有擴展DefaultTreeCellRenderer創(chuàng)建自己的樹節(jié)點渲染器,我創(chuàng)建的渲染器代碼如下:
    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;

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

    public class TreeNodeRenderer extends DefaultTreeCellRenderer{
        
    private static final long serialVersionUID = 8532405600839140757L;
        
        
    // 數(shù)據(jù)庫圖標,頂層節(jié)點用
        private static final Icon databaseIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/database.gif"));
        
        
    // 表圖標,第三層節(jié)點用
        private static final Icon tableIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/leaf.gif"));
        
        
    // 表空間關閉狀態(tài)圖標,關閉狀態(tài)的第二層節(jié)點用
        private static final Icon tableSpaceCloseIcon = new ImageIcon(TreeNodeRenderer.class
                .getResource(
    "/close.gif"));
        
        
    // 表空間關閉狀態(tài)圖標,打開狀態(tài)的第二層節(jié)點用
        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);   
            
    // 取得節(jié)點
            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 和風細雨 閱讀(2828) 評論(0)  編輯  收藏 所屬分類: Swing

    主站蜘蛛池模板: 一级一级一级毛片免费毛片| 69视频在线观看高清免费| 亚洲综合精品香蕉久久网| 暖暖在线视频免费视频| 国产婷婷综合丁香亚洲欧洲| 日本免费网站观看| 91在线免费视频| 久久亚洲国产最新网站| 成人午夜亚洲精品无码网站| 黄色片在线免费观看| caoporm碰最新免费公开视频 | 亚洲免费观看网站| 免费播放春色aⅴ视频| 免费A级毛片无码视频| 另类专区另类专区亚洲| 91天堂素人精品系列全集亚洲| 国产成人一区二区三区免费视频 | 成人人观看的免费毛片| a在线免费观看视频| 久久亚洲最大成人网4438| 亚洲午夜福利在线观看| 黄网址在线永久免费观看| 免费的全黄一级录像带| 国产精品亚洲一区二区三区 | 亚洲人成网站在线观看播放青青| 亚洲无码精品浪潮| 成人超污免费网站在线看| 久久狠狠躁免费观看2020| 日本在线观看免费高清| 色偷偷女男人的天堂亚洲网| 亚洲AV无码不卡在线播放| 国产免费131美女视频| 国产大片免费网站不卡美女 | 91成人免费观看网站| 免费人成在线观看网站| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 337P日本欧洲亚洲大胆精品| 亚洲欧洲日韩综合| 亚洲AV永久无码精品水牛影视| 亚洲精品高清一二区久久| 国产美女精品视频免费观看 |