说清楚点,什么叫TreeNode的前半部还是后半部?

解决方案 »

  1.   

    我给TreeNode加了CheckBox,我需要判断是不是点在CheckBox上
      

  2.   

    我的可能与你的不同,关键是
    if(mbounds != null && x > mbounds.x + ((UITreeNodeRenderer)tree.getCellRenderer()).check.getWidth())
    这个地方public void mouseClicked(MouseEvent e)
    {
        int x = e.getX();
        int y = e.getY();
        int row = tree.getRowForLocation(x,y);
        TreePath path = tree.getPathForRow(row);
        Rectangle mbounds = tree.getRowBounds(row);
        //TreePath  path = tree.getSelectionPath();
        if(path == null)
        {
            return;
        }    UITreeNode node = (UITreeNode)path.getLastPathComponent();    boolean isSelected = !(node.isSelected());
        //解决了默认双击展开与折叠的问题!
        if(mbounds != null && x > mbounds.x + ((UITreeNodeRenderer)tree.getCellRenderer()).check.getWidth())
        {
         //在这里做你的CheckBox操作
            return;
        }    if(ftreeModel.isChecked() && mbounds != null && x < mbounds.x + ((UITreeNodeRenderer)tree.getCellRenderer()).check.getWidth())
        {
            node.setIsChecked(!node.isChecked());
            node.setSelected(!node.isSelected());
            if(node.isChecked())
            {
                tree.getSelectionModel().addSelectionPath(path);
            }
        }
        if(node.isExpanded())
        {
            expandAll(tree,path,false);
            node.setisExpanded(false);
        }
        else
        {
            expandAll(tree,path,true);
            node.setisExpanded(true);
        }
    }