簡體   English   中英

榮:如何在同一張圖中添加不同顏色的邊緣

[英]JUNG:How to add different color edge in the same graph

我正在使用Jung2開發一個應用程序,它將顯示兩點之間的連接類型,有兩種不同類型的連接可用。我想使用不同的顏色顯示每種類型的連接。為此,我想在兩點之間添加兩個不同的彩色邊緣從A到B的兩個頂點將是黑色,從B到A的兩個頂點將是綠色。任何人都可以幫我舉例說明...

在此處輸入圖片說明

您必須定義一個接收邊並返回PaintTransformer在這種情況下, Paint可以簡單地是Color Transformer必須分配給RenderContext作為

  • ArrowFillPaintTransformer
  • ArrowDrawPaintTransformer
  • EdgeDrawPaintTransformer

在此示例中,是根據邊的頂點來決定是否if (s.equals("v1") && d.equals("v0"))綠色或黑色繪制邊緣( if (s.equals("v1") && d.equals("v0"))的語句表示)從"v1""v0"的邊緣)。

import java.awt.Color;
import java.awt.Paint;

import javax.swing.JFrame;

import org.apache.commons.collections15.Transformer;

import edu.uci.ics.jung.algorithms.layout.FRLayout;
import edu.uci.ics.jung.graph.DirectedSparseGraph;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.visualization.VisualizationViewer;

public class JUNGEdgeColorsTest 
{

    public static void main(String[] args) 
    {
        JFrame jf = new JFrame();
        final Graph<String, String> g = getGraph();
        VisualizationViewer<String, String> vv = 
            new VisualizationViewer<String, String>(new FRLayout<String, String>(g));

        Transformer<String, Paint> colorTransformer = new Transformer<String, Paint>()
        {
            @Override
            public Paint transform(String e)
            {
                final String s = g.getSource(e);
                final String d = g.getDest(e);
                if (s.equals("v1") && d.equals("v0"))
                {
                    return Color.GREEN;
                }
                return Color.BLACK;
            }
        };
        vv.getRenderContext().setArrowFillPaintTransformer(colorTransformer);
        vv.getRenderContext().setArrowDrawPaintTransformer(colorTransformer);
        vv.getRenderContext().setEdgeDrawPaintTransformer(colorTransformer);
        jf.getContentPane().add(vv);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();
        jf.setVisible(true);
    }
    public static Graph<String, String> getGraph() 
    {
        Graph<String, String> g = new DirectedSparseGraph<String, String>();
        g.addVertex("v0");
        g.addVertex("v1");
        g.addEdge("e0", "v0", "v1");
        g.addEdge("e1", "v1", "v0");
        return g;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM