2011-05-21 87 views
3

我建立使用JUNG(Java的通用網絡/圖框架)用下面的代碼的圖形:重繪圖表上JUNG

g = new SparseMultigraph<BusStop, Travel>(); 

//add some Vertex and Edges 

Layout<String, String> layout1 = new CircleLayout(g); 
layout1.setSize(new Dimension(300,300)); // sets the initial size of the layout space 

VisualizationViewer vv = new VisualizationViewer(layout1); 
vv.setPreferredSize(new Dimension(350,350)); //Sets the viewing area size 

Transformer<BusStop,Paint> vertexPaint = new Transformer<BusStop,Paint>() { 
    public Paint transform(BusStop b) { 
     return Color.GREEN; 
    } 
}; 

Transformer<BusStop,Shape> vertexShape = new Transformer<BusStop,Shape>() { 
    public Shape transform(BusStop b) { 
     return new Rectangle(-20, -10, 40, 20); 
    } 
}; 

vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); 
vv.getRenderContext().setVertexShapeTransformer(vertexShape); 
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller()); 
vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR); 

GraphViewerForm = new edu.uci.ics.jung.visualization.GraphZoomScrollPane(vv); 

現在,我想更多的頂點和邊添加到圖形..怎麼能我這樣做?我應該運行什麼指令來重繪圖表?謝謝!

回答

1

被使用。如果你正在尋找用戶後重繪圖互動,您必須添加一個EditingModalGraphMouse到您的VisualizationViewer

EditingModalGraphMouse gm = new EditingModalGraphMouse(vv.getRenderContext(), 
      vertexFactory, edgeFactory); 
    vv.setGraphMouse(gm); 

構造必須vertexFactoryedgeFactory被供給從

Factory<E> and Factory<V> 

其工作是通過創建邊緣/頂點類的新實例來創建()方法衍生對象

Factory <BusStop> vertexFactory = new Factory<BusStop>() { 
      public BusStop create() { 
       return new BusStop(); 
      } 
     }; 

相同的爲edgeFactory

1

如果你想添加的頂點和邊:

//add some Vertex and Edges 
g.addVertex((BusStop)obj1); 
g.addVertex((BusStop)obj2); 
g.addEdge((Travel) trv1, obj1, obj2); 

例如看看如何addVertexaddEdgeSimpleGraphView.java

+0

我知道:)我的問題是,當我移動滾動條時圖形只刷新。謝謝 – notGeek 2011-05-23 00:29:38

+0

添加節點後,調用vv.repaint()。 – Sami 2011-05-23 10:09:44

5

向圖中添加邊和頂點後,必須調用vv.repaint()來繪製更改。