Graphviz es una herramienta que agrupa varios programas que generan distintos tipos de grafos a partir de archivos con un lenguaje definido. o tambien a travez de una api. (ejemplo de uso de graphviz desde C# para dibujar árbol binario, ejemplo de graphviz para dibujar un arbol B)

primero te descargas el paquete de graphviz y lo instalas
http://www.graphviz.org/Download_windows.php 

eso crea en archivos de programa una carpeta

C:\Archivos de programa\Graphviz 2.28\bin

ahi estan los ejecutables que nos interesan, en este caso por lo que planteas vamos a usar dot.exe que es para dibujar grafos dirigidos jerarquicos.

algo mas del lenguaje dot

http://www.graphviz.org/Documentation/dotguide.pdf

un ejemplo de grafo simple

grafo1.txt

Código:

digraph G
{
    node1;
    node2;
    node3;

    node1 -> node2 [label="linea1"];
    node1 -> node3 [label="linea2"];
    node2 -> node3 [label="linea3"];
}






otro mas

grafo2.txt

Código: 

digraph G
{
    main->parse->execute
    main->init;
    main->cleanup;
    execute->make_string;
    execute->printf
    init->make_string;
    main->printf;
    execute->compare;
}






ahora para generar un jpg a partir de estos codigos, digamos que tenes dos archivos. grafo1.txt y grafo2.txt

se debe invocar en la consola el siguiente comando

Código: 

...path_de_dot...\dot.exe -Tjpg archivo_de_entrada -o archivo_de_salida
a lo mas concreto para nuestros archivos de prueba

Código:

C:\Archivos de programa\Graphviz 2.28\bin\dot.exe -Tjpg grafo1.txt -o grafo1.jpg

y

Código: 

C:\Archivos de programa\Graphviz 2.21\bin\dot.exe -Tjpg grafo2.txt -o grafo2.jpg
ahora para hacer esto desde java. vas a tener que generar el texto que representa el grafo para luego invocar a dot.exe desde java y que te genere el jpg y luego jalar el jpg y mostrarlo en java. (esto es solo una forma, si conseguis el api de graphviz para java, mejor pero ya es otro metodo)

lo que vas a hacer para invocar la generacion es usar Runtime.getRuntime().exec() de java para invocar a dot.exe y mandarle los parametros de tus archivos que queres pasar a jpg.

Código: 






public class Main {
public static void main(String[] args) {
System.out.println("Hola Mundo");
try {

String dotPath = "c:\\Archivos de programa\\Graphviz 2.28\\bin\\dot.exe";

String fileInputPath = "c:\\grafo1.txt";
String fileOutputPath = "c:\\grafo1.jpg";

String tParam = "-Tjpg";
String tOParam = "-o";

String[] cmd = new String[5];
cmd[0] = dotPath;
cmd[1] = tParam;
cmd[2] = fileInputPath;
cmd[3] = tOParam;
cmd[4] = fileOutputPath;

Runtime rt = Runtime.getRuntime();

rt.exec( cmd );

} catch (Exception ex) {
ex.printStackTrace();
} finally {
}

}
}

Solo tenes que ver donde generas tus archivos de texto para representar los grafos, y luego invocar a dot y que te genere los jpgs. ya de ahi usas los jpgs donde sea necesario…

otros links de referencia

http://java.sun.com/developer/JDCTechTips/2003/tt0304.html

http://blog.taragana.com/index.php/archive/java-runtimeexec-guide/es/

http://www.ibm.com/developerworks/library/l-graphvis/