你怎么能在jGraphx中回答鼠标事件?

时间:2016-04-27 08:44:18

标签: java graphics jgraphx

使用jGraphx,我已经能够构建一个反映程序结构的简单图表。这个图形将是只读的,即用户可以改变顶点的位置,但没有别的(BTW,我已将可编辑单元格和可连接边缘设置为false,但仍可以绘制连接(?) )。

问题是我希望能够在用户点击顶点时显示上下文菜单。我怎样才能做到这一点?我的代码或多或少如下:

mxGraph graph = new mxGraph();
graph.getModel().beginUpdate();

...
Object box = graph.insertVertex( parent, null, obj.getName(), pos, level, 60, 30 );
inheritanceConnections.add( obj );
boxes.put( obj.getPath(), box );
...

// Draw inheritance vertexes
for(ObjectBag obj: inheritanceConnections) {
    graph.insertEdge( parent, null, "", boxes.get( obj.getPath() ), boxes.get( obj.getParentObject().getPath() ) );
}
graph.getModel().endUpdate()

基本上,首先绘制所有对象,然后设置它们之间的连接(作为另一个对象的对象父对象)。

我希望能够做到这样的事情:

Object box = graph.insertVertex( parent, null, obj.getName(), pos, level, 60, 30 );
box.addMouseListener( new MouseListener....

谢谢。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

graph.getGraphComponent().getGraphControl().addMouseListener(...)

然后获取鼠标事件的单元格:

@Override
public void mouseReleased(MouseEvent e) {
    Object cell = graph.getGraphComponent().getCellAt(e.getX(), e.getY());
    ...add logic...
}

然后,您可以检查单元格是否为空并且是否为顶点。