java jtree 不同节点上的不同菜单添加方式
2010-04-26 16:04
针对这个问题,我想了好久,从网上也搜索过资料,但好像没有完整的解决方法。 后来我想到了一种方
法,经验证是成功的,在这里,我记录下我的方法,希望对有需要的同志们有帮助。能够相互学习和交流。
简述思路:
基本思想是:根据一个节点只有一个父节点的理念。
已经条件:我们在编写程序时,肯定知道在哪层节点上使用什么菜单。
首先获取需要添加弹出菜单的节点,根据其父节点的层次来设置菜单。
例子:
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("室外柜");//根节点
JTree jtree1 = new JTree(rootNode );
jtree1.addMouseListener(this); //添加鼠标监听器:单击右键,弹出添加菜单
public void mouseReleased(MouseEvent e){//弹出菜单
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) jtree1.getLastSelectedPathComponent();//获取选中的节点
DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectedNode.getParent();
JPopupMenu popMenu = new JPopupMenu(); //获取选中节点的父节点
if(e.isPopupTrigger()){ //判断是否为右键单击,以便实现右键弹出菜单
if(parentNode == null){//根节点的弹出菜单,用来添加二级节点
JMenuItem MenuRootNode = new JMenuItem("添加");
popMenu.add(MenuRootNode);
MenuRootNode.addActionListener(this);
}else{//二级节点的弹出菜单
JMenuItem MenuLeafNode1 = new JMenuItem("通道参数设置");
JMenuItem MenuLeafNode2 = new JMenuItem("温度设置");
JMenuItem MenuLeafNode3 = new JMenuItem("数据采集");
popMenu.add(MenuLeafNode1);
popMenu.add(MenuLeafNode2);
popMenu.add(MenuLeafNode3);
MenuLeafNode1.addActionListener(this);
MenuLeafNode2.addActionListener(this);
MenuLeafNode3.addActionListener(this);
}
popMenu.show(e.getComponent(), e.getX(), e.getY()); //弹出菜单的显示位置
}
}
java jtree 不同节点上的不同菜单添加方式
最新推荐文章于 2020-03-23 21:22:14 发布