果然,checkBox的值改变之前,事件已经触发了

解决方案 »

  1.   

    Error大哥,你终于来了,我等一上午你觉得主方法那个地方应该改一下
      

  2.   

    public void mouseClicked(MouseEvent e) {
              int x = e.getX();
              int y = e.getY();
              int row = tree.getRowForLocation(x, y);
              TreePath path = tree.getPathForRow(row);
              if (path != null) {
                CheckBoxNode node = (CheckBoxNode) path.getLastPathComponent();
                boolean isSelected = ! (node.isSelected());
                node.setSelected(isSelected);
                if (node.getSelectionMode() == CheckBoxNode.DIG_IN_SELECTION) {
                  if (isSelected) {
                    tree.expandPath(path);
                  }
                  else {
                    tree.collapsePath(path);
                  }
                }
                ( (DefaultTreeModel) tree.getModel()).nodeChanged(node);
                if (row == 0) {
                  tree.revalidate();
                  tree.repaint();
                }
              }
              if (rightTree == e.getSource()) {
                try {
                  hashTable = new Hashtable();
                  CheckBoxNode selectedNode = (CheckBoxNode) rightTree.
                      getLastSelectedPathComponent();
                  CheckBoxNode parentNode = (CheckBoxNode) selectedNode.getParent();
        
                  if (selectedNode.isLeaf()) {
                    Enumeration enum = parentNode.children();
                    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));
                      }
                    }
                    hashTable.put(key, value);
        
                    Iterator iterator = hashTable.keySet().iterator();
                    String[] getValue;
                    while (iterator.hasNext()) {
                      String s = (String) iterator.next();
                      System.out.println("key " + s);
                      getValue = (String[]) (hashTable.get(s));
        
                      for (int i = 0; i < getValue.length; i++) {
                        System.out.print("  value " + "  " + value[i]);
                      }
                    }
                  }
                }
                catch (Exception exception) {
                  exception.printStackTrace();
                }
              }
            }    }
      

  3.   

    你的节点读取应放在mouseclick里,这样读出来的值才是修改后的值。呵呵
      

  4.   

    谢谢,ALLError大哥,我试试看,谢谢你了