关于JTree节点删除一个疑问!期待完美解答!

ljava7150 2007-12-11 11:49:46
程序编译环境JBuilder2006
代码中的jTree1是JBuilder里面的默认树

Java code
public void btnDelete_actionPerformed(ActionEvent e)
{
TreePath path = jTree1.getSelectionPaths();
jTree1.removeSelectionPath(path);
}



此代码是一个删除按钮的事件 用来删除节点
其实这个题目一种方法我已经知道了 是利用 DefaultTreeModel 和 removeNodeFromParent();来进行删除工作
但是我在考虑这个问题的时候 首先就想到两个方法
1。找出我选择的节点
2。删除它
所以我在javax.swing.JTree类的方法中找到了2个这样的方法
TreePath getSelectionPath()
返回首选节点的路径。
void removeSelectionPath(TreePath path)
从当前选择中移除指定路径标识的节点。
很明显 满足我的要求 当下放进了我的删除按钮事件里面 (就是上面的代码)
但是当我选择了某节点时 按下删除按钮时候 并没有完成删除()过程中也无任何错误异常 )
随后用System.out.println(path);进行测试发现确实输出我选择的节点的路径

总结 : 难道真的是API在欺骗我吗?
确实使用了API指定的方法 但是确不能完成
一个好像只要2个方法就能实现的功能 未必这么麻烦?
很不理解。
...全文
228 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
daimojingdeyu 2007-12-12
  • 打赏
  • 举报
回复
removeSelectionPath是去选中的,不是删除节点的。如果要删除的话,要使用DefaultTreeModel中的removeNodeFromParent方法。
ljava7150 2007-12-12
  • 打赏
  • 举报
回复
void removeSelectionPath(TreePath path)
从当前选择中移除指定路径标识的节点。

API帮助是这么说的
不理解2L所说的 请仔细一点好吗
yuanyemars 2007-12-12
  • 打赏
  • 举报
回复
treeModel.nodeStructureChanged(dad);
一句才是关键啊,把树刷新了。
wunan320 2007-12-12
  • 打赏
  • 举报
回复
lz可以操作JTree.getSelectionPath().

DefaultMutableTreeNode son = (DefaultMutableTreeNode) tree.getSelectionPath().getLastPathComponent();
DefaultMutableTreeNode dad = (DefaultMutableTreeNode) son.getParent();
dad.remove(son);
treeModel.nodeStructureChanged(dad);

这样也可以达到ls几位说的效果.
xiyuan1999 2007-12-12
  • 打赏
  • 举报
回复
Up
guoyueshan 2007-12-12
  • 打赏
  • 举报
回复
JTree是基于mvc模式的,删除节点只有通过模型,TreeModel来进行
removeSelectionPath意思是,你选中了某个或某几个节点来进行处理,但我处理时有个例外,不想处理path这个节点,那么就要将它取消选中,即从选中的集合中将其删除,这时可以用removeSelectionPath(path)来取消选中。也就是“ 从当前选择中移除指定路径标识的节点。”

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧