1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.vci.client.portal.NewNewUI.buttonmng;
 
import java.awt.Component;
 
import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
 
public class TabButtonTreeRenderer extends DefaultTreeCellRenderer {
    
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 7402228913205233469L;
    /**
     * 根节点图标
     */
    private ImageIcon root;
    /**
     * 叶子节点图标
     */
    private ImageIcon buttonLeaf;
    /**
     * 展开图标
     */
    private ImageIcon buttonExpanded;
    /**
     * 折叠图标
     */
    private ImageIcon buttonCollapsed;
 
    /**
     * 构造器
     */
    public TabButtonTreeRenderer() {
        super();
        root = new ImageIcon(getClass().getResource("/com/vci/client/portal/NewNewUI/buttonmng/images/root.gif"));
        buttonLeaf = new ImageIcon(getClass().getResource("/com/vci/client/portal/NewNewUI/buttonmng/images/leaf.gif"));
        buttonExpanded = new ImageIcon(getClass().getResource("/com/vci/client/portal/NewNewUI/buttonmng/images/expanded.gif"));
        buttonCollapsed = new ImageIcon(getClass().getResource("/com/vci/client/portal/NewNewUI/buttonmng/images/collapsed.gif"));
    }
 
    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value,
            boolean sel, boolean expanded, boolean leaf, int row,
            boolean hasFocus) {
        
        Component c = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
                row, hasFocus);
        
        //需要在设置父方法后重新设置图标样式
        try {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
            Object userObject = node.getUserObject();
            if(userObject instanceof String) {
                //根节点
                setIcon(this.root);
            } else if(userObject instanceof ClientPLTabButton) {
                //按钮节点
                if(leaf) {
                    setIcon(this.buttonLeaf);
                } else if(expanded) {
                    setIcon(this.buttonExpanded);
                } else {
                    setIcon(this.buttonCollapsed);
                }
            } else {
                //...
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return c;
    }
}