java jtree 不同节点上的不同菜单添加方式

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()); //弹出菜单的显示位置
   } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值