Java Jung Graph:いくつかのエッジは矢を見逃しています
質問
staticlayoutでグラフを作成し、頂点のシェイプ色を変更しました。私はエッジに関連するものを変換しませんでした。すべてのエッジが監督されていますが、それらのいくつかは矢を見逃しています!どうすれば起こりますか?
グラフ視覚化コード:
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();
グラフはです
graph = new DirectedSparseGraph<Object, String>();
エッジはそのように作成されます
graph.addEdge(bundle.getGood()+"->"+transformation,bundle.getGood(),transformation);
graph.addEdge(transformation+"->"+bundle.getGood(),transformation,bundle.getGood());
ありがとう
解決
矢印の配置は、遠いセグメントが頂点の形状に囲まれ、次に戻るまでエッジを細分化することによって行われます。操作が開始されたときにファーエンドポイントが頂点形状の内側にない場合、例外がスローされるはずです。正しいソリューションを選択しました。これは、頂点が所定の位置に翻訳される前に、頂点の形状を原点に集中させることです。トム・ネルソン
他のヒント
問題はEdgerendererによって引き起こされます。エッジが頂点の左上隅に接続されている場合、混乱します。形を変えたとき
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));
接続ポイントは頂点の中心に移動し、そこからEdgerendererは問題なくその魔法を行います。ただし、形状のフレーム位置を変更すると、この違いが生じる理由がわかりません。誰かがこれを説明できれば喜んでいるでしょう。
所属していません StackOverflow