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