Java JUNG Graphique: Quelques bords manquent flèches
Question
Je l'ai fait un graphique avec StaticLayout et des formes modifiées \ couleurs des sommets. Je ne transformait tout ce qui touche aux bords. Tous les bords sont dirigés, mais certains d'entre eux manquent flèches! Comment cela pourrait-il arriver?
Graphique de visualisation de code:
Layout<Object, String> layout = new StaticLayout<Object, String>(graphProvider.graphFor(market),new MarketVertexLayoutTransformer(market,panel.getMarketGraphPane().getSize() )) ;
layout.setSize(panel.getMarketGraphPane().getSize());
VisualizationViewer<Object,String> graphPanel = new VisualizationViewer<Object,String>(layout);
graphPanel.getRenderContext().setVertexShapeTransformer(new MarketVertexShapeTransformer());
graphPanel.getRenderContext().setVertexFillPaintTransformer(new MarketVertexColorTransformer());
panel.getMarketGraphPane().add(graphPanel, BorderLayout.CENTER);
panel.getMarketGraphPane().revalidate();
Graphiques est
graph = new DirectedSparseGraph<Object, String>();
et Edges sont créés comme
graph.addEdge(bundle.getGood()+"->"+transformation,bundle.getGood(),transformation);
graph.addEdge(transformation+"->"+bundle.getGood(),transformation,bundle.getGood());
Merci
La solution
La mise en place de la flèche se fait en subdivisant le bord jusqu'à ce que le segment mesure est enfermé dans la forme de sommet, puis reculer celui-ci. Si le critère d'évaluation est loin pas dans la forme de sommet au démarrage de l'opération, il devrait y avoir une exception levée. Vous avez choisi la bonne solution, qui est au centre de vos formes de sommet sur l'origine avant qu'ils ne soient traduits en place. Tom Nelson
Autres conseils
Le problème est causé par EdgeRenderer. Il est confus si les bords sont reliés au coin supérieur gauche du sommet. Quand j'ai changé mes formes de
CIRCLE(new Ellipse2D.Double(0,0,40,40)),
BOX(new Rectangle2D.Double(0,0,40,40));
à
CIRCLE(new Ellipse2D.Double(-20,-20,40,40)),
BOX(new Rectangle2D.Double(-20,-20,40,40));
Les points de connexion déplacé au centre de sommets et de là EdgeRenderer fait sa magie sans problème. Cependant, je ne comprends pas pourquoi changer la position de cadre d'une forme fait cette différence. Serait heureux si quelqu'un pourrait expliquer cela.