2014-03-26 64 views
1

我正在開發一個使用Jung2的應用程序,它將顯示兩點之間的連接類型,有兩種不同類型的連接可用。我想顯示每種類型的連接使用不同的顏色。爲此,我想添加兩個不同顏色的邊緣之間的兩個頂點從A到B它將是黑色和B到A它將是綠色。可以幫助我的任何一個例子...JUNG:如何在同一個圖中添加不同的顏色邊緣

enter image description here

+0

這不僅是兩點之間的連接。其實我是用JUNG繪製網絡圖。 – anupammaiti

回答

4

您必須定義接收邊緣並返回PaintTransformer--在這種情況下,Paint可以簡單地爲Color。這Transformer必須分配給RenderContext

  • ArrowFillPaintTransformer
  • ArrowDrawPaintTransformer
  • EdgeDrawPaintTransformer

的邊緣是否有綠色或黑色塗漆的決定是基於在這個例子中的頂點(語句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; 
    } 
} 
+0

謝謝lotttttttttttttttt .............. – anupammaiti

相關問題