我正在使用Visual Studio 2012 Web界面进行开发。当我删除父节点时,它会正确删除,但是当我尝试删除子节点时,节点会保留并且似乎不会被删除。两种方法都显示相同的结果。
Tree1.Nodes.Remove(e.Node);
这是一个使用e作为FineUI.TreeCommandEventArgs删除节点的回发方法。
Tree1.Nodes.Remove(Tree1.SelectedNode);
这是删除节点的另一种方法。没有更新或刷新方法来刷新树。两者都无法删除子节点。
另一个问题是我想基于SelectedNode更新数据库,SelectedNodeID包含一个带有ID值的字符串,但是它以fnode1的形式存在,我只想在结尾处使用整数值。我想知道如何只获取整数值,以便从数据库中删除所选节点。
答案 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);
}
});
}
}
希望这会有所帮助。