Reputation: 1528
I build a graph using JUNG (Java Universal Network/Graph Framework) with the following code:
g = new SparseMultigraph<BusStop, Travel>();
//add some Vertex and Edges
Layout<String, String> layout1 = new CircleLayout(g);
layout1.setSize(new Dimension(300,300)); // sets the initial size of the layout space
VisualizationViewer vv = new VisualizationViewer(layout1);
vv.setPreferredSize(new Dimension(350,350)); //Sets the viewing area size
Transformer<BusStop,Paint> vertexPaint = new Transformer<BusStop,Paint>() {
public Paint transform(BusStop b) {
return Color.GREEN;
}
};
Transformer<BusStop,Shape> vertexShape = new Transformer<BusStop,Shape>() {
public Shape transform(BusStop b) {
return new Rectangle(-20, -10, 40, 20);
}
};
vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
vv.getRenderContext().setVertexShapeTransformer(vertexShape);
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR);
GraphViewerForm = new edu.uci.ics.jung.visualization.GraphZoomScrollPane(vv);
Now, I want to add more vertices and edges to the graph.. how can I do this? What instructions should I run for the graph to be redrawn? Thanks!
Upvotes: 3
Views: 3554
Reputation: 4006
If you want to add vertices and edges:
//add some Vertex and Edges
g.addVertex((BusStop)obj1);
g.addVertex((BusStop)obj2);
g.addEdge((Travel) trv1, obj1, obj2);
For example see how addVertex and addEdge is being used in SimpleGraphView.java
Upvotes: 1
Reputation: 1872
After adding edges and vertices to the graph, you must call vv.repaint()
to draw the changes.
Upvotes: 5
Reputation: 1640
If you are looking for redrawing the graph after user interaction, you have to add an EditingModalGraphMouse to your VisualizationViewer
EditingModalGraphMouse gm = new EditingModalGraphMouse(vv.getRenderContext(),
vertexFactory, edgeFactory);
vv.setGraphMouse(gm);
the constructor must be fed with vertexFactory and edgeFactory objects derived from
Factory<E> and Factory<V>
whose job is to create a new instance of edge/vertices class via the create() method
Factory <BusStop> vertexFactory = new Factory<BusStop>() {
public BusStop create() {
return new BusStop();
}
};
same for the edgeFactory
Upvotes: 1