Frage

Ich habe ein Diagramm mit staticLayout erstellt und Formen Farben von Scheitelpunkten geändert. Ich habe nichts mit den Kanten verwandelt. Alle Kanten sind gerichtet, aber einige von ihnen vermissen Pfeile! Wie könnte das passieren?

screenshot

Graph Visualisierungscode:

    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();

Grafiken sind

graph = new DirectedSparseGraph<Object, String>();

und Kanten werden so erstellt

   graph.addEdge(bundle.getGood()+"->"+transformation,bundle.getGood(),transformation);
   graph.addEdge(transformation+"->"+bundle.getGood(),transformation,bundle.getGood());

Vielen Dank

War es hilfreich?

Lösung

Die Pfeilplatzierung wird durchgeführt, indem die Kante unterteilt wird, bis das FAR -Segment in die Scheitelpunktform eingeschlossen ist und dann eine zurückbewegt wird. Wenn sich der Fernendpunkt beim Start der Operation nicht in der Scheitelpunktform befindet, sollte eine Ausnahme ausgelöst werden. Sie haben die richtige Lösung ausgewählt, die darin besteht, Ihre Scheitelpunktformen auf dem Ursprung zu zentrieren, bevor sie eingeführt werden. Tom Nelson

Andere Tipps

Das Problem wird durch Edgerenderer verursacht. Es wird verwirrt, wenn die Kanten mit der oberen linken Ecke des Scheitelpunkts verbunden sind. Als ich meine Formen aus änderte

CIRCLE(new Ellipse2D.Double(0,0,40,40)),
BOX(new Rectangle2D.Double(0,0,40,40));

zu

CIRCLE(new Ellipse2D.Double(-20,-20,40,40)),
BOX(new Rectangle2D.Double(-20,-20,40,40));

Verbindungspunkte in das Zentrum von Scheitelpunkten und von dort aus erledigt Edgerenderer ohne Probleme seine Magie. Ich verstehe jedoch nicht, warum das Ändern der Rahmenposition einer Form diesen Unterschied macht. Ich würde mich freuen, wenn jemand das erklären könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top