I'm using GEF. I have a graphical editor with some "boxes" implemented. Now, I want to add a double-click listener to each box (Rectangle). I tried to add a listener to the GraphicalViewer but it did not work.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
In the GraphicalEditPart
of the "box" for which you want to add the listener, you have to override the performRequest(Request req)
method. When the framework identifies a double-click on the part's figure, it calls this method with a request that has req.getType()==RequestConstants.REQ_OPEN
. You can take over from here.
Complete code to test that his works:
@Override
public void performRequest(Request req) {
if(req.getType() == RequestConstants.REQ_OPEN) {
System.out.println("requested double-click.");
}
}
Hope this does the trick.
回答2:
I am not familiar with GEF myself, however I found this in documentation:
- GraphicalEditor abstraction sets the EditDomain - handler for editing events
- EditDomain interface with methods for handling events - e.g. double click
- Tutorial on how to implement editing of models through GUI in GEF (using EditDomain)
回答3:
viewer.getControl().addListener(SWT.MouseDoubleClick, new Listener() {
@Override
public void handleEvent(Event event) {
//write the double click action
});