Je suis nouveau à Jung. J'ai besoin de visualiser un arbre contenant plusieurs nœuds. Tout fonctionne bien en utilisant un graphique de type DelegateForest et un TreeLayout. Toutefois, lors de l'ajout d'arêtes, le code s'exécute dans une exception, si des arêtes sont ajoutées au graphique qui se trouvent déjà dans l'arborescence. L'exception est: "Exception dans le thread" principal "java.lang.IllegalArgumentException: l'arborescence ne doit pas déjà contenir l'enfant x". En d'autres termes, si un bord contenant des sommets, qui sont déjà dans le graphe, est ajouté, l'exception ci-dessus est levée. Le code exemple suivant illustre ceci:JUNG Graphique: TreeLayout pour SparseMultigraph
Forest<Integer, String> g2 = new DelegateForest<Integer, String>();
g2.addVertex((Integer) 1);
g2.addVertex((Integer) 2);
g2.addVertex((Integer) 3);
g2.addVertex((Integer) 4);
g2.addVertex((Integer) 5);
g2.addEdge("Edge-1-3", 1, 3);
g2.addEdge("Edge-2-3-P", 2, 3);
g2.addEdge("Edge-4-3-P", 4, 3);
g2.addEdge("Edge-4-5-P", 4, 5);
g2.addEdge("Edge-3-5-P", 3, 5);
Layout<Integer, String> layout = new TreeLayout<Integer, String>(g2);
VisualizationViewer<Integer, String> vv = new VisualizationViewer<Integer, String>(layout);
vv.setPreferredSize(new Dimension(800, 600));
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller());
vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR);
JFrame frame = new JFrame("Simple Graph View");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
L'exception est levée sur la ligne "g2.addEdge (" Edge-3-5-P "3, 5);" Je comprends donc que je dois utiliser le type de graphe SparseMultigraph. Malheureusement, il n'y a pas de disposition ressemblant à TreeLayout que l'on peut utiliser avec le SparseMultigraph. Pouvez-vous me donner un indice sur la façon de résoudre mon problème?
Merci beaucoup d'avance!
Vous ne pouvez pas utiliser TreeLayout pour un graphe qui n'est pas un arbre (et lorsque vous ajoutez l'arête 3-5, le graphe ** n'est plus un arbre). Vous pouvez envisager une mise en page différente, comme SpringLayout ou FRLayout ... – Marco13