public void valueChanged(TreeSelectionEvent e){}方法我的主类实现了TreeSelectionListener接口

解决方案 »

  1.   

    这个是构造方法import javax.swing.*;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.tree.*;
    import java.util.Hashtable;
    import java.util.HashMap;
    import java.util.Enumeration;
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;public class DepartmentTree extends JFrame implements TreeSelectionListener {
        private static final int WIDTH = 500;
        private static final int HEIGHT = 350;
        private static final int X = 150;
        private static final int Y = 150;
        private JTree leftTree, rightTree;
        private JPanel leftPanel, rightPanel;
        private String key;
        private String[] value;
        private Hashtable hashTable;    public DepartmentTree() {
            setTitle("DepartmentTree");
            setLocation(X, Y);
            setSize(WIDTH, HEIGHT);        leftTree = new JTree(makeLeftTree());
            leftTree.addTreeSelectionListener(this);
            leftTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);        rightTree = new JTree(makeRightTree());
            rightTree.setShowsRootHandles(true);
            rightTree.setCellRenderer(new MyTreeCellRenderer());
            rightTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
            rightTree.addMouseListener(new DepartmentTree.RightNodeSelectionListener(rightTree));
            rightTree.addTreeSelectionListener(this);        leftPanel = new JPanel(new GridLayout(1, 1));
            leftPanel.add(new JScrollPane(leftTree));
            rightPanel = new JPanel(new GridLayout(1, 1));        Container contentPane = getContentPane();
            contentPane.setLayout(new BorderLayout());        contentPane.add(leftPanel, BorderLayout.WEST);
            contentPane.add(rightPanel, BorderLayout.CENTER);
        }    public void valueChanged(TreeSelectionEvent e) {        if (leftTree == e.getSource()) {
                try {
                    rightPanel.removeAll();
                    DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) leftTree.getLastSelectedPathComponent();
                    DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectedNode.getParent();
                    if (selectedNode.isLeaf()) {
                        rightPanel.add(new JScrollPane(rightTree));
                        rightPanel.validate();
                        rightPanel.setVisible(true);
                        key = parentNode.toString() + "  " + selectedNode.toString();
                    }
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            }        if (rightTree == e.getSource()) {
                try {
                    CheckBoxNode selectedNode = (CheckBoxNode) rightTree.getLastSelectedPathComponent();
                    if (selectedNode.isLeaf()) {
                        String[] value = new String[selectedNode.getParent().getChildCount()];
                        CheckBoxNode fristLeaf = (CheckBoxNode) selectedNode.getFirstLeaf();                    value[0] = String.valueOf(fristLeaf.isSelected());
                        while (selectedNode.getNextLeaf() != null) {
                            for (int i = 1; i < value.length; i++) {
                                if (selectedNode.getNextLeaf().equals(selectedNode)) {
                                    value[i] = String.valueOf(!(selectedNode.isSelected()));
                                }
                                value[i] = String.valueOf(selectedNode.getNextLeaf());                        }
                        }                }
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            }
    }
      

  2.   

    还有就是上边的构造方法错了
    应该是这个
    import javax.swing.*;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.tree.*;
    import java.util.Hashtable;
    import java.util.HashMap;
    import java.util.Enumeration;
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;public class DepartmentTree extends JFrame implements TreeSelectionListener {
        private static final int WIDTH = 500;
        private static final int HEIGHT = 350;
        private static final int X = 150;
        private static final int Y = 150;
        private JTree leftTree, rightTree;
        private JPanel leftPanel, rightPanel;
        private String key;
        private String[] value;
        private Hashtable hashTable;    public DepartmentTree() {
            setTitle("DepartmentTree");
            setLocation(X, Y);
            setSize(WIDTH, HEIGHT);        leftTree = new JTree(makeLeftTree());
            leftTree.addTreeSelectionListener(this);
            leftTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);        rightTree = new JTree(makeRightTree());
            rightTree.setShowsRootHandles(true);
            rightTree.setCellRenderer(new MyTreeCellRenderer());
            rightTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
            rightTree.addMouseListener(new DepartmentTree.RightNodeSelectionListener(rightTree));
            rightTree.addTreeSelectionListener(this);        leftPanel = new JPanel(new GridLayout(1, 1));
            leftPanel.add(new JScrollPane(leftTree));
            rightPanel = new JPanel(new GridLayout(1, 1));        Container contentPane = getContentPane();
            contentPane.setLayout(new BorderLayout());        contentPane.add(leftPanel, BorderLayout.WEST);
            contentPane.add(rightPanel, BorderLayout.CENTER);
        }    public void valueChanged(TreeSelectionEvent e) {
            if (leftTree == e.getSource()) {
                try {
                    rightPanel.removeAll();
                    DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) leftTree.getLastSelectedPathComponent();
                    DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectedNode.getParent();
                    if (selectedNode.isLeaf()) {
                        rightPanel.add(new JScrollPane(rightTree));
                        rightPanel.validate();
                        rightPanel.setVisible(true);
                        key = parentNode.toString() + "  " + selectedNode.toString();
                    }
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            }        if (rightTree == e.getSource()) {
                try {
                    hashTable = new Hashtable();
                    CheckBoxNode selectedNode = (CheckBoxNode) rightTree.getLastSelectedPathComponent();
                    CheckBoxNode parentNode = (CheckBoxNode) selectedNode.getParent();
                    Enumeration enum = parentNode.children();
                    if (selectedNode.isLeaf()) {
                        value = new String[parentNode.getChildCount()];
                        while (enum.hasMoreElements()) {
                            for (int j = 0; j < value.length; j++) {
                                value[j] = (parentNode.toString() + "  " +
                                        String.valueOf(((CheckBoxNode) enum.nextElement()).isSelected));
                            }
                        }
                        System.out.println("\n key " + key);
                        for (int i = 0; i < value.length; i++) {
                            System.out.print(value[i]);
                        }
                        hashTable.put(key, value);
                    }
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            }
    }