邹栋梁
贫民
贫民
  • UID327
  • 粉丝0
  • 关注0
  • 发帖数2
阅读:7570回复:0

GEF两种处理双击模型事件的方法

楼主#
更多 发布于:2017-12-04 14:54
GEF的模型都是我们自定义的,不具有双击处理事件的方法。下面介绍两种常见的双击模型处理事件的方法:


第一种 performRequest

在模型对应的EditPart中添加performRequest方法,捕捉事件


1 public void performRequest(Request req) {        
2 if(req.getType().equals(RequestConstants.REQ_OPEN)){  
3     //这里写事件处理代码 4    }
5 }


第二种,就是在Editor类中,对整个viewer添加双击事件监听

首先我们需要定义一个接口


1 public interface IDoubleClickSupport { 2 3 public void doubleClicked(); 4 5 }
继承这个接口的模型,都需要实现一个doubleClicked方法。
然后,需要在Editor.java中添加监听事件



1 protected void initializeGraphicalViewer() { 2 viewer = getGraphicalViewer(); 3 ... 4 viewer.getControl().addMouseListener(new MouseAdapter(){ 5 public void mouseDoubleClick(MouseEvent e){ 6 IStructuredSelection selection = (IStructuredSelection)getGraphicalViewer().getSelection(); 7 Object obj = selection.getFirstElement(); 8 if(obj!=null && obj instanceof IDoubleClickSupport){ 9  ((IDoubleClickSupport)obj).doubleClicked(); 10  } 11  } 12  }); 13 14 }
这里通过调用getGraphicalViewer().getSelection()可以获得点击的对象,如果这个对象属于我们自己定义的接口,就会触发双击事件。


       资料参考:http://www.cnblogs.com/xing901022/p/4111363.html
游客

返回顶部