2016-04-27 13 views
0

Mit jGraphx konnte ich ein einfaches Diagramm erstellen, das die Architektur eines Programms widerspiegelt. Dieser Graph wird schreibgeschützt sein, dh der Benutzer kann die Positionen der Eckpunkte ändern, aber sonst nichts (BTW, ich habe editierbare Zellen und verbindbare Kanten auf false gesetzt, aber es ist immer noch möglich, Verbindungen (?)).Wie können Sie ein Mausereignis in jGraphx beantworten?

Die Frage ist, dass ich in der Lage sein soll, ein Kontextmenü anzuzeigen, wenn der Benutzer auf einen der Eckpunkte klickt. Wie kann ich das machen? Mein Code als mehr oder weniger wie folgt:

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() 

Grundsätzlich zuerst alle Objekte gezeichnet und später die Verbindungen zwischen ihnen (als ein Objekt Elternteil eines anderen Objekts) gesetzt.

Ich möchte in der Lage sein, etwas zu tun:

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

Danke.

Antwort

1

Sie können es wie so:

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

Und dann die Zelle für das Maus-Ereignis erhalten:

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

Sie können dann prüfen, ob Zelle nicht null ist und eine Ecke.