Вы должны знать несколько слоев префузии:
- Данные
- Визуализация
- Дисплей
Короче говоря, три слоя можно связать следующим образом:
Graph graph = new Graph(eg. yourXML_file);
Visualization viz = new Visualization();
viz.add(GRAPH, graph);
Display disp = new Display();
disp.setVisualization(viz);
Отображение - это графический компонент, который обычно добавляется на панель.
Здесь вы изменяете только слой данных.
Node newNode = graph.addNode();
graph.addEdge(oldNode, newNode);
Теперь вам нужно обновить визуальный слой:
viz.run("repaint");
Необходимо определить действие repaint .
ActionList repaint = new ActionList();
repaint.add(new RepaintAction());
viz.putAction("repaint", repaint);
Я действительно советую вам прочитать prefuse doc .
И вы можете найти много ресурсов на официальном форуме
По крайней мере, я могу вам сказать, что на данный момент prefuse не очень эффективен для обновления живого графика.
Но этого должно быть недостаточно, так как вы изменили структуру графа, вы должны восстановить ее в визуализации (то есть пересчитать размещение узлов и т. Д.). В вашем примере кода уже определены два действия. Запустите их в конце вашего действия.
viz.run("color");
viz.run("layout");
Этот метод не очень эффективен, потому что он добавляет много вычислений каждый раз, когда вы добавляете узел, но на данный момент нет других с prefuse.