你可以用一个static 变量把上次点击的节点先记录下来....

解决方案 »

  1.   

    給你提供我曾測試過的一段代碼(在點擊樹結點的事件中調用它)﹐它的作用是﹕
    當你點選當前結點時﹐它會選上當前結點前一個結點。
    你可以根據你的條件參考我的代碼來控制點選結點是否生效﹐
    其實﹐保存了selRow的值﹐也就表示保存了點選當前結點前的結點所處的位置﹐后面該怎么做就看你的了。
    長話短說了﹐希望能給你一點幫助:
        void doTreeMouseClicked(MouseEvent me){
          int selRow = treeShow.getRowForLocation(me.getX(), me.getY());//treeShow是JTree對象
          if (selRow != -1) {
            if (!me.isPopupTrigger()) {
    //        System.out.println(me.isPopupTrigger());
              TreePath selPath = treeShow.getPathForRow(selRow > 0?--selRow:selRow);
              treeShow.setSelectionPath(selPath);
              choose = (DefaultMutableTreeNode) treeShow.getLastSelectedPathComponent();
              //choose為此次点击之前所处在的节点      }//end of if (!me.isPopupTrigger())
        } //end of if (selRow != -1)
        }