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

📄 checkboxnodeeditor.java

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

public class CheckBoxNodeEditor extends AbstractCellEditor implements 
  TreeCellEditor { 

  CheckBoxNodeRenderer renderer = new CheckBoxNodeRenderer();

  ChangeEvent changeEvent = null;

  JTree tree;

  public CheckBoxNodeEditor(JTree tree) { 
    this.tree = tree;
  } 

  public Object getCellEditorValue() { 
    JCheckBox checkbox = renderer.getLeafRenderer();
    CheckBoxNode checkBoxNode = 
      new CheckBoxNode(checkbox.getText(), checkbox.isSelected());
    return checkBoxNode;
  } 

  public boolean isCellEditable(EventObject event) { 
    boolean returnValue = false;
    if (event instanceof MouseEvent) { 
      MouseEvent mouseEvent = (MouseEvent)event;
      TreePath path = tree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY());
      if (path != null) { 
        Object node = path.getLastPathComponent();
        if ((node != null) &&  (node instanceof DefaultMutableTreeNode)) { 
          DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)node;
          Object userObject = treeNode.getUserObject();
          returnValue = ((treeNode.isLeaf()) && (userObject instanceof CheckBoxNode));
        } 
      } 
    } 
    return returnValue;
  } 

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

    Component editor =
      renderer.getTreeCellRendererComponent(tree, value, true, expanded, leaf, row, true);

    // editor always selected / focused
    ItemListener itemListener = new ItemListener() { 
      public void itemStateChanged(ItemEvent itemEvent) { 
        if (stopCellEditing()) { 
          fireEditingStopped();
        } 
      } 
    } ;
    if (editor instanceof JCheckBox) { 
      ((JCheckBox)editor).addItemListener(itemListener);
    } 

    return editor;
  } 
} 

⌨️ 快捷键说明

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