swing·通讯录项目预备知识之JTree之节点的添加和右键菜单显示的完善

1.昨天的代码有一处不完善的地方就是,右键菜单和菜单栏用的是同一组Menu 和Menu Item,但是只有右键菜单能显示出来,而菜单栏整体消失了,经师傅指点小小的测试了下,把以下代码放入到jm_addGroupActionPerformed事件中

1 jpm1.add(this.jm_function);

同时删除以下在构造方法中三句代码

1 jpm1.add(this.jm_function);
2 jpm1.addSeparator();//添加分隔符
3 jpm1.add(this.jm_help);

即可,这里留个小小的悬念,就是为什么会是这样的情况,日后再说。。。。当然,各位大大知道的还望及时指点

 

2.实现右键菜单的添加组的功能

菜单的添加删除修改等功能参考自   http://bbs.csdn.net/topics/20139128  3楼

只要对添加组这个菜单项添加事件监听即可,代码如下

1     //添加组
2     private void jm_addGroupActionPerformed(java.awt.event.ActionEvent evt) {
3         currTreeNode = (DefaultMutableTreeNode) jtree_group.getLastSelectedPathComponent();
4         DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新增节点");
5         currTreeNode.add(newNode);
6         DefaultTreeModel model = (DefaultTreeModel) jtree_group.getModel();
7         model.nodeStructureChanged(currTreeNode);
8     }

API中关于nodeStructureChanged方法的介绍:

public void nodeStructureChanged(TreeNode node)
如果完全更改了节点的子节点、子节点的子节点、依此类推,则调用此方法。调用此方法将发布 treeStructureChanged 事件。

3.删除组,同添加组一样,实质是增删节点
1 private void jm_deleteGroupActionPerformed(java.awt.event.ActionEvent evt) {
2         // TODO add your handling code here:
3         DefaultTreeModel model = (DefaultTreeModel) jtree_group.getModel();
4         model.removeNodeFromParent(currTreeNode);
5     }

 

4.重命名可以通过勾选JTree的属性框的editable实现,代码省。


欢迎光临我师傅小锋哥的网站 Java知识分享网 www.java1234.com 有大量Java资料供学习参考用,一切免费


posted @ 2013-06-05 23:06  Hipk  阅读(498)  评论(0编辑  收藏  举报