0

元に戻す機能の要素を削除しようとしていますが、JTree に最後に追加されたものだけを削除したいと考えています。

削除するために、Cut のメソッドを変更しているだけです。

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();
                }
            }
        } 
    }       
4

1 に答える 1

0

手っ取り早い汚い方法は、メイン ツリーから 1 つを削除する前に 2 つ目のツリーを作成し、そこにすべてのノードを追加し、メイン ツリーを以前のコピーに置き換えるだけで元に戻すことです。最も美しい解決策ではありませんが、その点を超えてしまう可能性があります.

私は実際にこれをarraylistで行い、arraylistのコンテンツからツリーを構築しました。

于 2012-07-18T04:11:46.917 に答える