这是一个MCVE示例。
package stackoverflow;
import javax.swing.JFrame;
import org.apache.commons.collections15.Transformer;
import edu.uci.ics.jung.algorithms.layout.FRLayout;
import edu.uci.ics.jung.graph.DirectedSparseMultigraph;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.visualization.VisualizationViewer;
public class JungNetwork {
public static Graph<String, String> getGraph()
{
Graph<String, String> g = new DirectedSparseMultigraph<String, String>();
g.addVertex("v1");
g.addVertex("v2");
g.addVertex("v3");
g.addEdge("label1", "v1", "v2");
g.addEdge("label2", "v2", "v3");
g.addEdge("label3", "v3", "v1");
return g;
}
public static void main(String[] args)
{
JFrame f = new JFrame();
final Graph<String, String> g = getGraph();
VisualizationViewer<String, String> vv = new VisualizationViewer<String, String>(new FRLayout<String, String>(g));
final Transformer <String, String> edgeLabel = new Transformer<String, String>(){
@Override
public String transform(String edge) {
// TODO Auto-generated method stub
if (edge.equals("label1")|| edge.equals("label2")){
return "label1";
}else
return "label3";
}
};
vv.getRenderContext().setLabelOffset(15);
vv.getRenderContext().setEdgeLabelTransformer(edgeLabel);
f.getContentPane().add(vv);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
}
结果:
