首页
学习
活动
专区
圈层
工具
发布

JUNG仿真
EN

Stack Overflow用户
提问于 2015-01-05 15:03:19
回答 1查看 137关注 0票数 0

我在JUNG做一个项目。我想添加一个鼠标事件,当用户移动一个节点或顶点时,该事件将被调用。我试过多个听众,比如,ItemListener,GraphMouseListener..。

我试过,在一些类似的密码中:

代码语言:javascript
复制
          vv.addGraphMouseListener(new GraphMouseListener() {

            @Override
            public void graphClicked(Object v, MouseEvent me) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void graphPressed(Object v, MouseEvent me) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void graphReleased(Object v, MouseEvent me) {

           Object subject = me.getSource();
                // The graph uses Integers for vertices.
                if (subject instanceof VertexFactory) {
                    VertexFactory vertex = (VertexFactory) subject;
                    if (pickedState.isPicked(vertex)) {
//                        selectedNode = vertex;
                        System.out.println("Vertex " + vertex
                                + " is now selected");
                        re.calDistance(bs.get(0));
                        dest();
                        vv.repaint();
                        vv.updateUI();

                    }
                }
            }
       });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-06 08:04:50

我建议扩展PickingGraphMousePlugin并将其添加到GraphMouse中

http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/visualization/control/PickingGraphMousePlugin.html

代码语言:javascript
复制
public class MovingGraphMousePlugin<V, E> extends PickingGraphMousePlugin<V, E> {

    @Override
    public void mousePressed(MouseEvent e) {
        super.mousePressed(e);
        if(vertex != null) {
            System.out.println(vertex + " was picked.");
        }
    }
}

然后,例如:

代码语言:javascript
复制
DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse();
graphMouse.add(new MovingGraphMousePlugin<V, E>());
visualViewer.setGraphMouse(graphMouse);

这只是一个粗略的例子,只会告诉你一个顶点已经被选中。如果要打印某个顶点已被移动,则还必须重写mouseReleased方法。然后,您必须比较鼠标被按下的两个点和释放鼠标的位置(e.getPoint())。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27782180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档