package day5_090306; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Enumeration; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; public class CheckboxNodeTree extends JFrame { private static final long serialVersionUID = 1L; public CheckboxNodeTree() { super("CheckboxTreeExample"); String[] strs = { "计算机", "数学", "软件设计", "数学分析", "Java", "C++", "离散数学" }; CheckboxTreeNode[] nodes = new CheckboxTreeNode[strs.length]; // 构建复选框节点 for (int i = 0; i < strs.length; i++) { nodes[i] = new CheckboxTreeNode(strs[i]); } nodes[0].add(nodes[1]); // 节点子父关系的描述 nodes[0].add(nodes[2]); nodes[1].add(nodes[3]); nodes[1].add(nodes[6]); nodes[2].add(nodes[4]); nodes[2].add(nodes[5]); JTree tree = new JTree(nodes[0]); tree.setCellRenderer(new CheckboxNodeTreeRenderer()); // 设置tree的显示方式(也就是渲染方式) tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION); tree.addMouseL