Cambiar forma de los nodos usando jgraph

Cerrado
lis - 7 may 2010 a las 04:34
 javier_lop - 8 sep 2010 a las 18:04
Estoy programando un javabean para visualizar grafos y estoy usando la biblioteca de grafos de java jgraph. Necesito saber como se cambia la forma de los nodos para que sea circulo o ellipse u otro.

1 respuesta

hola.

Todo Vertex (Cells, Edges o Port) en Jgraph esta relacionado con un VertexView. y estos , ademas tienen un VertexRenderer.
En vertexRender tenemos el metodo encargados de dibujar los Vertex y sus marcos de seleccion. es aqui (en el metodo paint) donde tienes que dibujar la forma que quieres que tenga tu nodo.
Te recomiendo que mires estas clases( VertexView y VertexRenderer) en el paquete org.jgraph.graph, veas como estan implementadas, y te crees la tuya propia.
Una vez que tengas tus MiVertexViewCirculo y MiVertexRenderCirculo (por ejemplo) tendras que indicarle a JGraph que quieres q estas clases representen a tus nodos, esto tienes que hacerlo implementando la interfaz CellViewFactory, o heredando de DefaultCellViewFactory:

public class MiCellViewFactory extends DefaultCellViewFactory { 
  
       /** 
        *  CellViews para cada tipo de Celda 
        * */ 
    protected VertexView createVertexView(Object celda) { 
      
     if (celda instanceof <TuClase>){ 
      return new MiVertexViewCirculo(celda); 
     }else { 
      return new VertexView(celda); 
     } 
  } 


Mas tarde, tienes que indicar a JGraph que use esta factoria de celdas, cuando creas la VISTA del jgraph (GraphLayoutCache), de este modo

 GraphLayoutCache vista = new (getModel(), new MiCellViewFactory())); 

o asignarla de este modo
getGraphLayoutCache().setFactory(new MiCellViewFactory()); 
1