emilien81
Messages postés21Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 2 juin 2005
-
1 juin 2005 à 12:45
emilien81
Messages postés21Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 2 juin 2005
-
2 juin 2005 à 09:23
Bonjour a tous,
J'ai un probleme avec un arbre de type JTree en Java. En fait j'ai des blancs qui apparaissent et lorsque je veux ajouter un noeud à l'arborescence, il faut que je rafraichisse tout l'arbre pour qu'il le prenne en compte.
Le soucis c'est que je ne sais pas par ou commencer par prendre mon probleme.
je crois que le plus simple c d'abord de vous montrer des bouts du code :
//entete de la classe + constructeur
public class ArbreModel implements TreeModel, Observer
{
private Root root= null;
private ArrayList listener = new ArrayList();
public ArbreModel(Root _root)
{
this.root=_root;
rootChanged();
this.reseau.addObserver(this);
}
________________________
//l'ajout d'un noeud
public void nodeAdded(TreeElement node)
{
node.addObserver(this);
TreePath path = node.getParent().makeTreePath();
int childIndex[] = {node.getParent().getIndexOfChild(node)};
Object nodes[] = {node};
//averti de l'ajout d'un noeud
TreeModelEvent event = new TreeModelEvent(this, path, childIndex, nodes);
for (int i=this.listener.size()-1; i>=0; i--)
{
TreeModelListener l = (TreeModelListener) this.listener.get(i);
l.treeNodesInserted(event);
}
}
ce que j'ai remarqué c'est que si je retire le addObserver dans le constructeurou encore si je met TreePath path node.makeTreePath(); à la place de TreePath path node.getParent().makeTreePath(); dans l'ajout d'un noeud
alors les blancs disparaissent mais par contre si je veux ajouter un noeud ensuite il faut que je rafraichisse tout l'arbre pour voir apparaitre cet ajout.
je ne sais vraiment pas comment debuguer ca, si quelqu'un a une idée pour me sortir de la je suis preneur.
Merci
cs_mep
Messages postés86Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 3 septembre 20084 1 juin 2005 à 13:01
Deja pou eviter de reloader tout l'arbre tu peux te contenter de
reloader le parent du noeud que tu ajoute. Si ton parent est le root ca
revient au meme que de reloader tout l'arbre.
emilien81
Messages postés21Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 2 juin 2005 1 juin 2005 à 14:31
j'y avais pensé mais ca risque de ralentir le temps d'execution de l'apllication
et je sais que c possible de le faire sans.
ca serait dommange de faire comme ca, alors que Java est assez bien fait pour gérer ce type d'evenement.