Dibujar un árbol en Java sin usar JTree

Iniciado por Fran88, 5 Agosto 2009, 17:33 PM

0 Miembros y 1 Visitante están viendo este tema.

efx

pues yo entregue un proyecto similar...solo que lo deje a medias
por que los nodos se me enciman...pero los programo en un  Applet...
habia creado un tema para pedir ayuda de como dibujarlo pero al final encontre esta solucion... :rolleyes:

Código (java) [Seleccionar]
/*Metodo recursivo que dibuja el arbol empezando de la raiz hasta la ultima hoja*/
public void dibujaNodo(Graphics g,int x,int y,NodoA raiz)
{
NodoA aux=raiz;

//si la raiz no esta vacia--tiene al menos un elemento
if(aux!=null)
{
g.setColor(new Color(255,228,196));
g.fillOval(x,y,25,25);
g.drawOval(x,y,25,25);//solo dibujamos el nodo raiz en X Y

g.setColor(new Color(165,42,42));
g.drawString(aux.getinfo()+"",x+9,y+16);//dibujamos la info de raiz en medio del circulo

/*si hay algo en la izquierda*/
if(aux.getizq()!=null)
{
//Imprimir linea de x,y a x-TAM, y+TAM

g.drawLine(x+5,y+22,x-35,y+50);
/*se llama el metodo pero ahora con nuevas coordenadas y otro nodo*/
dibujaNodo(g,x-50,y+50,aux.getizq());

}

/*si hay algo en la derecha*/
if(aux.getder()!=null)
{
//Imprimir linea de x,y a x+TAM, y+TAM
g.drawLine(x+20,y+22,x+55,y+50);
/*se llama el metodo pero ahora con nuevas coordenadas y otro nodo*/
dibujaNodo(g,x+50,y+50,aux.getder());

}
}

}


ya solo en el metodo paint

Código (java) [Seleccionar]
public void paint(Graphics g) {

g.drawImage(titulo,120,0,242,93,this);
/*Solo acomodamos los componentes*/
txtDato.setBounds(420,30,30,20);
insertar.setBounds(440,60,60,20);
eliminar.setBounds(370,60,60,20);

rEn.setBounds(20,95,120,20);
rPos.setBounds(160,95,120,20);
rPre.setBounds(310,95,120,20);

h.setBounds(168,125,100,20);

dibujaNodo(g,200,150,A.getraiz());


}


bueno pues salu2 a todos  ;D

kuruchus

Gracias por la ayuda. Terminé el proyecto y cuando se acabe el curso subiré el código aquí.
Un saludo