我在JUNG做一个项目。我想添加一个鼠标事件,当用户移动一个节点或顶点时,该事件将被调用。我试过多个听众,比如,ItemListener,GraphMouseListener..。
我试过,在一些类似的密码中:
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();
}
}
}
});发布于 2015-01-06 08:04:50
我建议扩展PickingGraphMousePlugin并将其添加到GraphMouse中
http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/visualization/control/PickingGraphMousePlugin.html
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.");
}
}
}然后,例如:
DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse();
graphMouse.add(new MovingGraphMousePlugin<V, E>());
visualViewer.setGraphMouse(graphMouse);这只是一个粗略的例子,只会告诉你一个顶点已经被选中。如果要打印某个顶点已被移动,则还必须重写mouseReleased方法。然后,您必须比较鼠标被按下的两个点和释放鼠标的位置(e.getPoint())。
https://stackoverflow.com/questions/27782180
复制相似问题