荣格模拟
JUNG Simulation
我正在 JUNG 做一个项目。我想添加一个鼠标事件,当用户移动节点或顶点时将调用该鼠标事件。
我尝试了多个侦听器,例如 ItemListener、GraphMouseListener..
我已经试过了,n 一些类似的代码:
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();
}
}
}
});
我建议扩展 PickingGraphMousePlugin 并将其添加到您的 GraphMouse
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()
)。
我正在 JUNG 做一个项目。我想添加一个鼠标事件,当用户移动节点或顶点时将调用该鼠标事件。 我尝试了多个侦听器,例如 ItemListener、GraphMouseListener..
我已经试过了,n 一些类似的代码:
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();
}
}
}
});
我建议扩展 PickingGraphMousePlugin 并将其添加到您的 GraphMouse
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()
)。