1

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

ありがとう

4

2 に答える 2

2

矢印の配置は、遠いセグメントが頂点の形状で囲まれるまでエッジを細分割してから、1つ後ろに移動することによって行われます。操作の開始時に遠端が頂点シェイプの内側にない場合は、例外がスローされます。正しい解決策を選択しました。それは、頂点の形状を所定の位置に変換する前に、原点の中心に配置することです。トムネルソン

于 2011-10-20T20:11:15.157 に答える
0

この問題は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は問題なく魔法を実行します。ただし、形状のフレーム位置を変更すると、なぜこの違いが生じるのかわかりません。誰かがこれを説明できたら嬉しいです。

于 2011-10-20T12:08:22.420 に答える