我加入了一个JTree控件,如何响应鼠标右键单击事件?我想在鼠标右键单击后弹出一个右键菜单。
如何做?谢谢

解决方案 »

  1.   

    先建一个菜单对象,处理JTree控件鼠标事件,然后将菜单显示出来
      

  2.   

    我就是不知道JTree鼠标事件是什么,我在文档中找不到呀?只有一个addSelectionListener
      

  3.   

    楼主可以用Jtree的mousePressed组合JPopupMenu菜单来实现我是用JBuilder的,以下是实现mousePressed时的代码,BUTTON3是鼠标右键,pmn就是菜单。  public void jte_mousePressed(MouseEvent e) {
        if(e.getButton()==e.BUTTON3){
          pmn.show(this,e.getX(),e.getY());
        }
      }希望对楼主有帮助。
      

  4.   

    这样的话怎么得到我选择的是JTree中的哪一个结点呢?
      

  5.   

    在JTree类中有一个方法叫getLastSelectedPathComponent(),用来返回返回当前选择的第一个节点中的最后一个路径组件,也就是你当前所选定的节点例如你可以这样写:DefaultMutableTreeNode node = 
    (DefaultMutableTreeNode)jTreeObj.getLastSelectedPathComponent();这里就jTreeObj是之前实例化的一个JTree对象,这样node就是最后选择的那个节点,你就可以对它进行你想要的操作了。
      

  6.   

    这样的话我怎么得到当前结点的文本?
    我用node这个对象调用任何函数都会出现java.lang.NullPointerException异常
      

  7.   

    我知道了,之所以出现异常是因为当用右键选JTree中的结点的时候其实并没有选中这个结点,因为它没有便成选中的颜色?
    如何解决?谢谢
      

  8.   

    按上面例子node.toString就是当前节点的文本关于选中那因该就要写一个右键选中获取焦点的事件,不过一般都是左键选中然后再右键去操作吧
      

  9.   

    这个我也不会要查查api为什么不就左键操作呢,绕个大圈
      

  10.   

    我的程序界面分两个部分,左边是JTree,右边是一个列表框,就像windows中的资源管理器,左键单击JTree控件会在右边的列表框中显示响应的内容,右键单击会出现弹出式菜单,其实和资源管理器的操作差不多,我找了一下api,没有响应的右键消息,能不能自己写一个右键监听消息呢?
      

  11.   

    我觉得像java这样的语言不应该没有右键获得焦点的方法,但是api中却找不到,那位高人能够指点一下,谢了
      

  12.   

    那你知不知道JTree如何能够自动添加结点,也就是说当单击某个结点时,如何能够在他的下面动态添加若干个结点?
    谢谢
      

  13.   

    我现在知道怎么右键选择了,要用getPathforLocation(),这个方法的,我整理一下再放上来动态加节点应该就是捕获鼠标单击事件再写相应代码添加节点吧
      

  14.   

    关于右键选择的解决方法,同样是捕获鼠标按下的事件,代码如下  public void jTree1_mousePressed(MouseEvent e) {
        TreePath tp=jTree1.getPathForLocation(e.getX(),e.getY());
        jTree1.setSelectionPath(tp);
      }几个关键的方法都是在javax.swing.tree.TreePath这里面,楼主查一下api就应该很清楚了
      

  15.   

    那 mousePressed和mouseClicked函数有什么区别?
      

  16.   

    那JTree能不能动态添加结点呢?也就是说当点击一个结点时会动态在这个结点下面添加若干个子结点?
    再有,按下和点击不是一样的吗?