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; } }