2010-08-11 6 views

답변

0

에 JUNG

감사

를 사용하여 그래프를 만들 어쨌든 거기에 어떻게 찾을 수 없습니다. 그러나 StaticLayout에 정점을 추가 한 다음 그리드의 좌표에 따라 각 정점의 위치를 ​​변경하여 그리드 기반 레이아웃을 만들 수 있습니다.

import edu.uci.ics.jung.algorithms.layout.*; 
import edu.uci.ics.jung.graph.*; 
import edu.uci.ics.jung.visualization.*; 
import edu.uci.ics.jung.visualization.control.*; 
import java.awt.*; 
import javax.swing.*; 

public class JungGridLayout extends JFrame { 

Graph graph; 
StaticLayout layout; 
VisualizationViewer vv; 

public static void main(String[] args) { 
    JungGridLayout g = new JungGridLayout(25,5,5); 
} 

public JungGridLayout(int numNodes, int numRows, int numColumns) { 
    graph = new SparseMultigraph(); 
    layout = new StaticLayout(graph); 

    //distance between the nodes 
    int distX=100; 
    int distY=100; 

    //idea is to add the vertices and change and the position of each vertex to a coordinate in a grid 
    for (int n=0;n<numNodes;n++) { 
     graph.addVertex(String.valueOf(n)); 
    } 

    int operatingNode = 0; 

    for (int i=0;i<numRows;i++) { 
     for (int j=0;j<numColumns;j++) { 
      layout.setLocation(String.valueOf(operatingNode++), i*distX, j*distY); 
     } 
    }   

    createVisualization(); 
    createFrame(); 
} 

public void createFrame() { 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.pack(); 
    this.setVisible(true); 
} 

public void createVisualization() { 
    vv = new VisualizationViewer(layout, new Dimension(800, 600)); 

    //zooming and transforming 
    GraphZoomScrollPane zoomPane = new GraphZoomScrollPane(vv); 
    DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse(); 
    vv.setGraphMouse(graphMouse); 

    this.getContentPane().add(zoomPane); 
} 
}