2010-11-22 28 views
1

J'ai un grand JTree et j'ai besoin de développer des milliers de nœuds en même temps. En ce moment, cela prend beaucoup de temps. Je pense que c'est parce que ça envoie des notifications et que tout le travail est fait pour tout le monde. Existe-t-il un moyen de lui dire d'étendre tous les nœuds d'un lot afin qu'il ne doive mettre à jour les choses qu'une seule fois après?Existe-t-il un moyen rapide de développer de nombreux chemins dans un JTree?

Ou d'une autre façon de rendre plus rapide l'expansion de lots de nœuds dans un lot?

+0

Étant donné que nous avons pas posté votre SSCCE (http://sscce.org) indiquant le code que vous utilisez pour développer les nœuds, je ne sais pas comment nous pouvons faire des suggestions à faire quelque chose différent. – camickr

Répondre

0

Avez-vous essayé de désactiver les écouteurs d'événement de l'arborescence? De cette façon, il ne déclenchera pas d'événements chaque fois que vous modifiez l'arbre. Quelque chose comme ceci:

setVisible(false); 
tree.removeTreeWillExpandListener(this); 
tree.removeTreeSelectionListener(this); 

//modify the tree 

tree.addTreeSelectionListener(this); 
tree.addTreeWillExpandListener(this); 
setVisible(true); 
+1

Si je supprime tous les écouteurs, l'arborescence ne se développera pas. Et il semble qu'une fois que j'essaie de l'étendre après ça, ça déclenche tous les événements ou quelque chose ... ça déclenche beaucoup d'événements de sélection quand il y a des événements d'expansion qui sont frustrants. – mentics

+0

L'arbre déclenchera probablement des événements ... mais il n'y aura rien pour les écouter. Vous pouvez toujours développer l'arborescence sans les écouteurs. Vous les ajoutez juste après l'expansion. –