2012-07-18 57 views
0

我試圖爲我的撤消功能刪除一個元素,但我想刪除添加到JTree的最後一件事。如何從JTree中刪除一個元素而不使用.getSelectionPath()進行選擇?

對於去除,我只是修改我的方法切割:

private void performUndoAction() {   

     if (tree != null) { 

      TreePath path = tree.getSelectionPath(); 
      if (path != null) { 

       DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); 
       if (node != tree.getModel().getRoot()) { 

        DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent(); 
        if (node.getUserObject() instanceof Attribute) { 

         Attribute at = (Attribute) node.getUserObject(); 
         at.getParent().removeAttribute(at); 
         cut = at; 
        } 
        else if (node.getUserObject() instanceof Element) { 

         Element el = (Element) node.getUserObject(); 
         el.getParent().removeContent(el); 
         cut = el; 
        } else if (node.getUserObject() instanceof Text) { 

         cut = ((Text) node.getUserObject()).getText(); 
         Element el = (Element) parent.getUserObject(); 
         el.setText(""); 
        } 
        parent.remove(node); 
        tree.updateUI(); 
       } 
      } 
     } 
    }  
+1

1)爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 2)這似乎是'我如何獲得對非選定節點的引用?'。是對的嗎? – 2012-07-18 01:34:19

回答

0

一個快速和骯髒的方法是進行第二次樹,並添加所有節點將其從主取出一個前樹,並撤消只是用以前的副本替換主樹。不是最漂亮的解決方案,但它可能會讓你超越這一點。

我已經用arraylist實際完成了這個工作,只是從arraylist內容構建樹。

相關問題