ciao, ho un piccolo problema con gli alberi volevo sapere se qualcuno di voi mi può aiutare...
ho un composite che accetta un visitor, ora vorrei fare sempre con il visitor la visita a livelli del composite... io ho provato cosi ma c'è qualcosa che non va e non riesco a capire cosa sia:
Codice PHP:
public class VisitaALivelli implements Visitor{
TreePanel panel;
ArrayList<NodoTree>listNodo;
int livelIndex;
FlowLayout fwl;
NodoTree root;
JPanel livello;
public TreePanel visualizza(Espressione e) {
livelIndex=0;
listNodo=new ArrayList<NodoTree>();
fwl=new FlowLayout(FlowLayout.CENTER,20,10);
livello=new JPanel(fwl);
panel=new TreePanel(0, listNodo);
e.accept(this);
panel.setNodi(listNodo);
return panel;
}
@Override
public void visit(Operatore o) {
NodoTree temp= new NodoTree(o.toString());
listNodo.add(temp);
livello.add(temp);
temp.setPadre(root);
root=temp;
panel.addLivel(livello);
livello=new JPanel(fwl);
o.FiglioDestro.accept(this);
o.FiglioSinistro.accept(this);
}
@Override
public void visit(Espressione e) {
e.FiglioDestro.accept(this);
e.FiglioSinistro.accept(this);
}
@Override
public void visit(Variabile v) {
NodoTree temp= new NodoTree(v.toString());
temp.setPadre(root);
listNodo.add(temp);
livello.add(temp);
panel.addLivel(livello);
}
@Override
public void visit(Costante c) {
NodoTree temp= new NodoTree(c.toString());
temp.setPadre(root);
listNodo.add(temp);
livello.add(temp);
panel.addLivel(livello);
}
}
praticamente ogni livello dovrebbe essere inserito in un FlowLayout ed essere aggiunto nel pannello solamente che non funziona molto bene e non riesco a capire dove sia l'errore e non mi vengono inmente altri modi per arrivare all'obbietivo visita...
qualche idea?