Я не совсем уверен, какова ваша конечная цель, поэтому я сделаю все возможное, чтобы помочь.
Сначала вы можете представить вероятности, определив пользовательские классы Edge и Edge Factory. То, что я сделал, было:
0. Импорт:
import org.apache.commons.collections15.Factory;
1. Добавьте в свои собственные классы. Они могут иметь что-то вроде:
public static class MyEdge {
private int flow;
private int capacity;
private String name;
private int eIndex;
public MyEdge(String name, int eIndex) {
this.name = name;
this.eIndex = eIndex;
}
public int getCapacity() {
return this.capacity;
}
public void setCapacity(int edgeCapacity) {
this.capacity = edgeCapacity;
}
public int getFlow() {
return this.flow;
}
public void setFlow(int edgeFlow) {
this.flow = edgeFlow;
}
public String toString() {
return this.name;
}
}
Пользовательская фабрика ребер - это то, что создает ваши ребра каждый раз, когда вы графически рисуете их на холсте, это может выглядеть так:
public static class MyEdgeFactory implements Factory {
private static int defaultFlow = 0;
private static int defaultCapacity = 0;
private int edgeCount;
private MyEdgeFactory() {
}
public MyEdge create() {
String name = "E" + edgeCount;
MyEdge e = new MyEdge(name, edgeCount);
edgeCount++;
e.setFlow(defaultFlow);
e.setCapacity(defaultCapacity);
return e;
}
}
2. Расскажите вашему зрителю визуализации, как отображать метки ребер; вам нужно будет добавить это там, где вы создаете свой граф и объект VisualizationViewer (vv):
vv.getRenderContext().setEdgeLabelTransformer(new Transformer() {
public String transform(MyEdge e) {
return (e.toString() + " " + e.getFlow() + "/" + e.getCapacity());
}
});
Теперь каждый раз, когда вы создаете ребро, его метка будет иметь вид "E0 0/0", "E1 0/0" и т. Д.
Я скоро опубликую подробные руководства и код на моем блоге , чтобы вы могли смотреть это место, если вы собираетесь тратить значительное время на любой проект, над которым работаете.