⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkboxnoderenderer.java

📁 The Definitive Guide to Java Swing, Third Edition by John Zukowski (Author) 源码
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.tree.*;
import java.awt.*;

public class CheckBoxNodeRenderer implements TreeCellRenderer { 
  private JCheckBox leafRenderer = new JCheckBox();
  private DefaultTreeCellRenderer nonLeafRenderer = new DefaultTreeCellRenderer();
  Color selectionBorderColor, selectionForeground, selectionBackground, textForeground, textBackground;

  protected JCheckBox getLeafRenderer() { 
    return leafRenderer;
  } 

  public CheckBoxNodeRenderer() { 
    Font fontValue;
    fontValue = UIManager.getFont("Tree.font");
    if (fontValue != null) { 
      leafRenderer.setFont(fontValue);
    } 
    Boolean booleanValue = (Boolean)UIManager.get("Tree.drawsFocusBorderAroundIcon");
    leafRenderer.setFocusPainted((booleanValue != null) && (booleanValue.booleanValue()));

    selectionBorderColor = UIManager.getColor("Tree.selectionBorderColor");
    selectionForeground = UIManager.getColor("Tree.selectionForeground");
    selectionBackground = UIManager.getColor("Tree.selectionBackground");
    textForeground = UIManager.getColor("Tree.textForeground");
    textBackground = UIManager.getColor("Tree.textBackground");
  } 

  public Component getTreeCellRendererComponent(JTree tree, Object value,
      boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { 

    Component returnValue;
    if (leaf) { 

      String stringValue = tree.convertValueToText(value, selected, expanded, leaf, row, false);
      leafRenderer.setText(stringValue);
      leafRenderer.setSelected(false);

      leafRenderer.setEnabled(tree.isEnabled());

      if(selected) { 
        leafRenderer.setForeground(selectionForeground);
        leafRenderer.setBackground(selectionBackground);
      }  else { 
        leafRenderer.setForeground(textForeground);
        leafRenderer.setBackground(textBackground);
      } 

      if ((value != null) && (value instanceof DefaultMutableTreeNode)) { 
        Object userObject = ((DefaultMutableTreeNode)value).getUserObject();
        if (userObject instanceof CheckBoxNode) { 
          CheckBoxNode node = (CheckBoxNode)userObject;
          leafRenderer.setText(node.getText());
          leafRenderer.setSelected(node.isSelected());
        } 
      } 
      returnValue = leafRenderer;
    }  else { 
      returnValue = nonLeafRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
    } 
    return returnValue;
  } 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -