Problèmes de performances avec les TreeViewer sous windows

Salut,

Pour tous ceux qui ont la chance (ou pas) de développer des clients lourd en Java, Je suis sur que vous connaissez l’objet TreeViewer. Mais si c’est grâce à ça qu’on peut faire des navigateurs/sélecteurs avec une gestion des hiérarchies…

Bref, pour ceux qui utilise ce genre de choses donc, sachez que sous windows (#Troll ;) ) la méthode permettant de replier/déplier tous les élements de la vue jusqu’au plus bas niveau hiérarchique est extrêmement lente. Cela vient tout simplement du fait que pour chaque élement, l’OS essaye de redessiner l’arbre…


Ce bug n’est pour le moment pas corrigé mais en attendant voici un bout de code qui permettra d’éviter que le dépliage de l’arbre prenne cent ans :

Lorsque que vous voulez déplier tout l’arbre, plutôt que d’appeler directement la méthode prévu à cet effet, on peut faire ceci

viewer.getTree().setRedraw(false);
try {
  viewer.expandAll();
} finally {
  viewer.getTree().setRedraw(true);
}

Bien sur ça vaut aussi pour la méthode collapseAll() qui réplie l’arbre.

Et voilà, bon code ! :)

source

Laisser un commentaire

Catégories
Nuage de Tags