2016-04-27 11 views
0

jGraphxを使用して、私はプログラムのアーキテクチャを反映した簡単な図を作成できました。このグラフは読み込み専用になります。つまり、ユーザーは頂点の位置を変更できますが、他に何もありません(BTW、編集可能なセルと接続可能なエッジをfalseに設定しましたが、接続(?) )。jGraphxでマウスイベントに答えるにはどうすればいいですか?

質問は、ユーザーが頂点をクリックしたときにコンテキストメニューを表示できるようにすることです。どうやってやるの?次のように多かれ少なかれとしての私コード:

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

あなたがそうのようにそれを行うことができます。

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

そして、マウスイベントのために、細胞を得る:

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

セルがnullでなく、頂点である場合は、その後、確認することができます。

関連する問題