2012-07-18 18 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内容构建树。

相关问题