删除Treenode未删除

时间:2014-05-05 10:01:19

标签: treenode

我正在使用Visual Studio 2012 Web界面进行开发。当我删除父节点时,它会正确删除,但是当我尝试删除子节点时,节点会保留并且似乎不会被删除。两种方法都显示相同的结果。

Tree1.Nodes.Remove(e.Node);

这是一个使用e作为FineUI.TreeCommandEventArgs删除节点的回发方法。

Tree1.Nodes.Remove(Tree1.SelectedNode);

这是删除节点的另一种方法。没有更新或刷新方法来刷新树。两者都无法删除子节点。

另一个问题是我想基于SelectedNode更新数据库,SelectedNodeID包含一个带有ID值的字符串,但是它以fnode1的形式存在,我只想在结尾处使用整数值。我想知道如何只获取整数值,以便从数据库中删除所选节点。

1 个答案:

答案 0 :(得分:0)

你需要做的是你需要从Tree获取DefaultNode,然后你必须删除它。看到这个。

    DefaultMutableTreeNode defaultMutableTreeNode = new DefaultMutableTreeNode(node_vervesystems);
    model.removeNodeFromParent(defaultMutableTreeNode);

将起作用。

这里是相同的例子。

import javax.swing.JFrame;

import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author kishan
 */
public class JTreeRemoveNode extends JFrame{
    public JTreeRemoveNode() throws HeadlessException {
        initializeUI();
    }

    private void initializeUI() {
        setSize(200, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Address Book");
        String[] names = new String[] {"Alice", "Bob", "Carol", "Mallory"};
        for (String name : names) {
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(name);
            root.add(node);
        }

        final JTree tree = new JTree(root);
        JScrollPane pane = new JScrollPane(tree);
        pane.setPreferredSize(new Dimension(200, 400));

        JButton removeButton = new JButton("Remove");
        removeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                DefaultTreeModel model = (DefaultTreeModel) tree.getModel();

                TreePath[] paths = tree.getSelectionPaths();
                for (TreePath path : paths) {
                    DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
                    if (node.getParent() != null) {
                        model.removeNodeFromParent(node);
                    }
                }
            }
        });

        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(tree, BorderLayout.CENTER);
        getContentPane().add(removeButton, BorderLayout.SOUTH);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new JTreeRemoveNode().setVisible(true);
            }
        });
    }
}
希望这会有所帮助。