package com.fr.plugin.event.manager.ui.tree; import com.fr.plugin.event.manager.data.MyNode; import com.fr.plugin.event.manager.data.MyTree; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import java.awt.Color; import java.awt.Component; /** * 组件树节点渲染方式 * @author Joe * Created by Joe on 12/14/2020 */ public class MyComponentCellRenderer extends DefaultTreeCellRenderer { public MyComponentCellRenderer() { } /** * 负责设置节点名称、图标和提示文字 * * @param tree * @param value * @param selected * @param expanded * @param leaf * @param row * @param hasFocus * @return */ @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if (value instanceof MyTree) { MyNode node = ((MyTree) value).getData(); String name = node.getNodeName(); setText(name); Icon icon = node.getIcon(); if (icon != null) { setIcon(icon); } setToolTipText(name); } this.setBorder(BorderFactory.createEmptyBorder(1, 0, 1, 0)); this.setBackgroundNonSelectionColor(new Color(255, 255, 255)); return this; } @Override public Icon getClosedIcon() { return getIcon(); } @Override public Icon getLeafIcon() { return getIcon(); } @Override public Icon getOpenIcon() { return getIcon(); } }