2010-08-11 40 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); 
} 
}