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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top