Java Jung Graph: Einige Kanten vermissen Pfeile
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?
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
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.