我正在用 Java 里的 JTree 做一个类似于QQ好友列表的东西,我想给树的节点添加鼠标双击事件,当我双击节点时,就会弹出相应的聊天对话框,但是树的节点没有addMouseListener这个方法。只有TreeSelectionListener这个方法,但这个方法没法实现双击监听。这个问题该怎么解决?想了很久都没有头绪,还请大家赐教,谢了!
   (ps:我只想用树来构建这个好友列表,不想用像按钮之类的东西)

解决方案 »

  1.   

    请参看javaAPI: 
    http://java.sun.com/javase/6/docs/api/javax/swing/JTree.html#JTree%28javax.swing.tree.TreeNode%29 final JTree tree = ...; MouseListener ml = new MouseAdapter() {
         public void mousePressed(MouseEvent e) {
             int selRow = tree.getRowForLocation(e.getX(), e.getY());
             TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
             if(selRow != -1) {
                 if(e.getClickCount() == 1) {
                     mySingleClick(selRow, selPath);
                 }
                 else if(e.getClickCount() == 2) {
                     myDoubleClick(selRow, selPath);
                 }
             }
         }
     };
     tree.addMouseListener(ml);
     
      

  2.   

    可以用单击监听器实现。
    在匿名类中添加变量
    long final doubleClickInterval = 300l;
    long lastTime = 0l;
    当单击事件触发时long clickTime = System.currentTimeMillines();
    if(clickTime-lastTime < doubleClickInterval){
      doubleClick();
      lastTime = clickTime;
      return;
    }
    添加这段代码在单击事件方法内就可以实现双击事件监听了。
    之前就是用这个办法实现过JTable面板的双击监听。
      

  3.   

    太感谢一楼的高手了!谢了
    答案的却如此!
    我还发现了用getLastSelectionComponent()去判断一下是否isLeaf()会只对叶子节点有效.