swing·通讯录项目预备知识之JTree---节点右键弹出菜单

首先来介绍JTree中的getPathForLocation和setSelectionPath方法

均为API中的介绍:

1.   public TreePath getPathForLocation(int x, int y)

返回指定位置处的节点路径。

参数:
x - 提供水平像素数的整数,从显示区域左边开始减去左边距
y - 提供垂直像素数的整数,从显示区域顶部开始减去顶边距
返回:
  该位置处节点的 TreePath
2.关于返回值TreePath
  API中的介绍:
public class TreePath extends Object  implements   Serializable
    表示节点的路径。
3.
public void setSelectionPath(TreePath path) 
择指定路径标识的节点。
参数:path - 指定要选择的节点的 TreePath
然后介绍SwingUtilities类的isRightMouseButton方法
public static boolean isRightMouseButton(MouseEvent anEvent)
  如果鼠标事件指定右边鼠标按键,则返回 true。
参数:
anEvent - 一个 MouseEvent 对象
返回:
如果右边鼠标按键处于活动状态,则返回 true
4.接下来,实现节点右键直接弹出菜单

 

 1 private javax.swing.JMenuItem jm_about;
 2  private javax.swing.JMenuItem jm_addGroup;
 3  private javax.swing.JMenuItem jm_deleteGroup;
 4  private javax.swing.JMenu jm_function;
 5  private javax.swing.JMenu jm_help;
 6  private javax.swing.JMenuItem jm_toUse;
 7  private javax.swing.JTree jtree_group;
 8  .......................................................................
 9  jtree_group = new javax.swing.JTree();
10  jMenuBar1 = new javax.swing.JMenuBar();
11  jm_function = new javax.swing.JMenu();
12  jm_addGroup = new javax.swing.JMenuItem();
13  jm_deleteGroup = new javax.swing.JMenuItem();
14  jm_help = new javax.swing.JMenu();
15  jm_about = new javax.swing.JMenuItem();
16  jm_toUse = new javax.swing.JMenuItem();
17  .........................................................................
18  jm_function.add(jm_addGroup);
19  jm_function.add(jm_deleteGroup);
20  jMenuBar1.add(jm_function);
21  JPopupMenu jpm1;
22  jm_help.add(jm_about);
23  jm_help.add(jm_toUse);
24  jMenuBar1.add(jm_help);
25  
26  public testJTreeFrm() {
27      initComponents();
28      jpm1 = new JPopupMenu();
29      jpm1.add(this.jm_function);
30      jpm1.addSeparator();//添加分隔符
31      jpm1.add(this.jm_help);
32      }
33  ..........................................................................
34  private void jtree_groupMousePressed(java.awt.event.MouseEvent evt) {
35          // TODO add your handling code her
36          int mods = evt.getModifiers();
37          if (SwingUtilities.isRightMouseButton(evt)) {
38              //            int selRow = jtree_group.getRowForLocation(evt.getX(), evt.getY());
39              //            if(selRow != -1){
40              TreePath selPath = jtree_group.getPathForLocation(evt.getX(), evt
41                      .getY());
42              if (selPath != null) {
43                  jtree_group.setSelectionPath(selPath);
44                 // jpm1.show(this, evt.getX(), evt.getY());
45                     jpm1.show(evt.getComponent(), evt.getX(), evt.getY());
46                 //这里最好用第二条语句,可以获得更好的用户体验
47              }
48    //       }
49          }
50      }

 

 

欢迎光临我师傅小锋哥的网站   java知识分享网  www.java1234.com

posted @ 2013-06-05 01:36  Hipk  阅读(636)  评论(0编辑  收藏  举报