在JUNG 2.0 Java框架中使用EditingModalGraphMouse插件定制鼠标
我试图覆盖默认的鼠标菜单,同时向图形添加顶点和边。我遵循了这个示例,因为它工作正常,但我想知道如果要更改鼠标光标,我需要实现什么接口或进行任何更改,并且能够使用右键单击而不是左键单击添加顶点/边:在JUNG 2.0 Java框架中使用EditingModalGraphMouse插件定制鼠标,java,swing,graph,jung,Java,Swing,Graph,Jung,我试图覆盖默认的鼠标菜单,同时向图形添加顶点和边。我遵循了这个示例,因为它工作正常,但我想知道如果要更改鼠标光标,我需要实现什么接口或进行任何更改,并且能够使用右键单击而不是左键单击添加顶点/边: public class PopupVertexEdgeMenuMousePlugin<V, E> extends AbstractPopupGraphMousePlugin { private JPopupMenu edgePopup, vertexPopup; pub
public class PopupVertexEdgeMenuMousePlugin<V, E> extends AbstractPopupGraphMousePlugin {
private JPopupMenu edgePopup, vertexPopup;
public PopupVertexEdgeMenuMousePlugin() {
this(MouseEvent.BUTTON3);
}
public PopupVertexEdgeMenuMousePlugin(int modifiers) {
super(modifiers);
}
protected void handlePopup(MouseEvent e) {
final VisualizationViewer<V,E> vv =
(VisualizationViewer<V,E>)e.getSource();
Point2D p = e.getPoint();
GraphElementAccessor<V,E> pickSupport = vv.getPickSupport();
if(pickSupport != null) {
final V v = pickSupport.getVertex(vv.getGraphLayout(), p.getX(), p.getY());
if(v != null) {
System.out.println("Vertex " + v + " was right clicked");
updateVertexMenu(v, vv, p);
vertexPopup.show(vv, e.getX(), e.getY());
} else {
final E edge = pickSupport.getEdge(vv.getGraphLayout(), p.getX(), p.getY());
if(edge != null) {
System.out.println("Edge " + edge + " was right clicked");
updateEdgeMenu(edge, vv, p);
edgePopup.show(vv, e.getX(), e.getY());
}
}
}
}
private void updateVertexMenu(V v, VisualizationViewer vv, Point2D point) {
if (vertexPopup == null) return;
Component[] menuComps = vertexPopup.getComponents();
for (Component comp: menuComps) {
if (comp instanceof VertexMenuListener) {
((VertexMenuListener)comp).setVertexAndView(v, vv);
}
if (comp instanceof MenuPointListener) {
((MenuPointListener)comp).setPoint(point);
}
}
}
}
在这里,它将顶点添加到图形中,使用左键单击,我想在右键单击时添加此选项。而且它只在编辑模式下添加vertext/edge,如何使它在拾取模式下也能这样做?或者在保持编辑模式的同时更改光标,使其看起来像是拾取模式?我不知道同时右键单击两条边和顶点,但对于其中一条边和顶点,效果很好。这是顶点。jframe是你的容格添加到的帧
visualv.addGraphMouseListener(new MyGraphMouseListener<String, String>(jframe));
........
private class MyGraphMouseListener<V, T> implements GraphMouseListener<V> {....}
编辑:这可以帮助您完成这两项工作在进一步讨论之前,您可以参考有关如何修改鼠标修改器的内容