1.DefaultMutableTreeNode中getParent()方法的介绍
来自API:
public TreeNode getParent() 返回此节点的父节点,如果此节点没有父节点,则返回null。
2.JPopupMenu中的removeAll()方法的介绍
来自API:
从类java.awt.Container继承的方法
public void removeAll() 从此容器中移除所有的组件。此方法还通知布局管理器,通过removeLayoutComponent方法从此容器的不居中移除这些组件
3.不同节点显示不同的右键菜单
参照 http://blog.sina.com.cn/s/blog_686eea390100jfbp.html
实现代码
1 //不同节点显示不同的右键菜单
2 if(parentNode == null){
3 jpm1.removeAll();
4 jpm1.add(jm_addGroup);//没有父节点即为根节点,右键菜单--添加组别
5 }else{
6 if(nodeCount == 0){
7 jpm1.removeAll();
8 jpm1.add(jm_deleteLinkMan);//有父节点没有子节点即为叶子节点,右键菜单--删除联系人
9 }else{//最后一种情况为分支节点,右键菜单--删除组及添加联系人
10 jpm1.removeAll();
11 jpm1.add(jm_addLinkMan);
12 jpm1.add(jm_deleteGroup);
13 }
14 }
15 }
16 jpm1.show(evt.getComponent(), evt.getX(), evt.getY());
4.对于上篇博客中添加组类别的一点补充:
完善点1------添加指点名称的组别
完善点2------如何使得新的节点在添加后就为被选中状态
参考 http://zhidao.baidu.com/question/60528552.html
1 //添加组
2 private void jm_addGroupActionPerformed(java.awt.event.ActionEvent evt) {
3 currTreeNode = (DefaultMutableTreeNode) jtree_group.getLastSelectedPathComponent();
4 String newGroupName = JOptionPane.showInputDialog(this, "请输入:").toString();
5 if(newGroupName != null || !newGroupName.endsWith("")){
6 DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(newGroupName);
7 currTreeNode.add(newNode);
8 DefaultTreeModel model = (DefaultTreeModel) jtree_group.getModel();
9 model.nodeStructureChanged(currTreeNode);
10
11 //根据Node得到TreePath
12 TreePath newPath = new TreePath(model.getPathToRoot(newNode));
13 jtree_group.setSelectionPath(newPath);
14 }else{
15 return;
16 }
17 }
欢迎光临我师傅小锋哥的网站 Java知识分享网 www.java1234.com 有大量Java资料供学习参考用,一切免费