Пользовательское MouseMenu с использованием плагина EditingModalGraphMouse в JUNG 2.0 Java Framework

Я пытаюсь переопределить меню мыши по умолчанию, добавляя вершины и ребра к графику. Я следовал этому примеру, так как он отлично работает, но я хочу знать, что (интерфейсы мне нужно реализовать, если они есть) или изменения, которые я должен внести, чтобы изменить курсор мыши, а также иметь возможность добавлять вершины/ребра, используя право щелчок вместо левого щелчка:

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);
            }
        }

    }

}  

Здесь он добавляет вершину к графу, используя левый щелчок, я хочу добавить эту опцию при щелчке правой кнопкой мыши. А также он добавляет вершину/ребро только в режиме редактирования, как я могу сделать то же самое и в режиме выбора? или можно изменить курсор, сохраняя режим редактирования, чтобы он выглядел как режим выбора?


person Johnydep    schedule 24.01.2012    source источник
comment
Перед дальнейшим обсуждением вы можете обратиться к MouseEvents с JUNG и Java о том, как изменить модификаторы мыши   -  person ee.    schedule 25.01.2012


Ответы (1)


я не знаю, щелкаю правой кнопкой мыши по обоим краям и вершине одновременно, но для одного из них он работает нормально. это для вершины. jframe — это ваш фрейм, к которому добавляется ваш jung.

    visualv.addGraphMouseListener(new MyGraphMouseListener<String, String>(jframe));
    ........
    private class MyGraphMouseListener<V, T> implements GraphMouseListener<V> {....}

РЕДАКТИРОВАТЬ: это может помочь вам с всплывающим меню с помощью щелчка правой кнопкой мыши в ЮНГ

person arash    schedule 25.07.2014