Я предполагаю, что класс MyWeightedEdge уже содержит метод, такой как
public void setWeight(double weight)
Если это действительно так, то вам нужно сделать следующее:
Получите свой собственный подкласс из ListenableDirectedWeightedGraph (например, ListenableDirectedWeightedGraph ). Я бы добавил обе версии конструктора, делегируя «super» для обеспечения совместимости с исходным классом.
Создайте график, как в вашем вопросе, но с использованием нового класса
ListenableDirectedWeightedGraph g =
new CustomListenableDirectedWeightedGraph(
MyWeightedEdge.class);
Переопределить метод setEdgeWeight следующим образом:
public void setEdgeWeight(E e, double weight) {
super.setEdgeWeight(e, weight);
((MyWeightedEdge)e).setWeight(weight);
}
И, наконец, что не менее важно, переопределите метод toString класса MyWeightedEdge , чтобы вернуть метку, которую должен иметь ребро (предположительно включая вес, который теперь доступен к нему).
Надеюсь, это поможет.