注释错了 sorry
public void mousePressed(MouseEvent e) 
        {
            try{
             String aaa="";
             String bbb="";
                JTree tr1 = (JTree)e.getSource();
                int rowLocation = tr1.getRowForLocation(e.getX(), e.getY());
                TreePath treepath = tr1.getPathForRow(rowLocation);
                treenode = (TreeNode) treepath.getLastPathComponent();//这个地方出现错误 
         求解
.
.
.
.

解决方案 »

  1.   

    如果鼠标点击到tree的空白部分, tr1.getRowForLocation(e.getX(), e.getY()) 会返回-1,然后下一句 tr1.getPathForRow(rowLocation) 就会返回null
    如果只是要在tree选择变化的时候得到通知,不如使用 addTreeSelectionListener()加一个选择变化监听器。如果必须要使用MouseListener的话(比如要监听双击事件),你可以参考JTree的API文档中的例子:final JTree tree = ...; MouseListener ml = new MouseAdapter() {
         public void mousePressed(MouseEvent e) {
             int selRow = tree.getRowForLocation(e.getX(), e.getY());
             TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
             if(selRow != -1) {
                 if(e.getClickCount() == 1) {
                     mySingleClick(selRow, selPath);
                 }
                 else if(e.getClickCount() == 2) {
                     myDoubleClick(selRow, selPath);
                 }
             }
         }
     };
     tree.addMouseListener(ml);
      

  2.   

    谢谢 下班后我调试一下
    注:我是点击在树结点上展开树,也出现这个错误,原来单独测试树和JTable联动时是没有问题的
    后来完成树的添加、删除、修改功能后不能用了 怪