swing·通讯录项目预备知识之JTree·不同节点弹出不同的右键菜单

时间:2024-03-09 13:38:22

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资料供学习参考用,一切免费