2010-11-22 4 views
1

Ich habe eine große JTree und ich muss Tausende von Knoten auf einmal erweitern. Gerade jetzt, das dauert lange. Ich denke, es ist, weil es Benachrichtigungen sendet und die ganze Arbeit für jeden erledigt. Gibt es eine Möglichkeit, es zu sagen, alle Knoten in einem Stapel zu erweitern, so dass es nur einmal danach aktualisiert werden muss?Gibt es eine schnelle Möglichkeit, viele Pfade in einem JTree zu erweitern?

Oder eine andere Möglichkeit, um viele Knoten in einem Stapel schneller zu erweitern?

+0

Da wir Ihre SSCCE nicht gebucht haben (http://sscce.org) zeigt den Code Sie die Knoten erweitern verwenden, um ich weiß nicht, wie wir Vorschläge machen können, etwas zu tun anders. – camickr

Antwort

0

Haben Sie versucht, die Ereignis-Listener des Baums zu deaktivieren? Auf diese Weise werden Ereignisse nicht jedes Mal ausgelöst, wenn Sie den Baum ändern. Etwas wie folgt aus:

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

//modify the tree 

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

Wenn ich alle Listener lösche, wird der Baum nicht erweitert. Und es scheint, dass, sobald ich versuche, es danach zu erweitern, es alle Ereignisse oder etwas feuert ... es löst viele Auswahlereignisse aus, wenn es ausgedehnte Ereignisse gibt, die frustrierend sind. – mentics

+0

Der Baum wird wahrscheinlich Ereignisse feuern ... aber es wird nichts zu hören sein. Sie können die Struktur immer noch ohne die Listener erweitern. Sie fügen sie nur nach der Erweiterung zurück. –