Lazy Loading eine JTree während Scrollen

JavaKnight

Mitglied
Hallo Forum!

Ich möchte gerne einen JTree lazy füllen. Das heißt, wenn ich einen Knoten aufklappe, fülle ich den Knoten solange, bis der sichtbare Bereich +10 gefüllt ist. Ich möchte dann beim Scrollen weitere Knoten anhängen.

1. wie stelle ich mich am besten an?
2. wie kann ich der Scrollbar vorgauckeln, dass sie mehr Scrollbereich zur Verfügung stellt, um das Hüpfen vom Scroll-Nob zu vermeiden?

Danke und Grüße

JavaKnight
 
Also ob sich das lohnt das weiß ich nicht. Wieviel Nodes hast du denn in deinem Tree und von welchem Typ. Ich würde das nur machen, wenn es sich um Bilder als Nodes handelt und wenn es ziemlich viele sind - und da musst du dich auch erst informieren, ob nicht von der JScrollPane selbst schon optimiert wird.
 
Es können mehr als 100.000 Knoten sein und ein Laden aller Knoten vom Server kann mehr als 5 Minuten dauern. Also sollen die stückweise nachgeladen werden.

Das nachladen ist nicht das Problem, das Reagieren auf ein onScroll event auch nicht.

Ich will wissen, wie ich an den sichtbaren Bereich sichtbare Zeilen herankomme und wie ich der Scrollpane vorgaukeln kann, dass ja eigentlich mehr Knoten vorhanden sind.
 
Hi JavaKnight,
Idee 1:
[Java]
Rectangle rect = tree.getVisibleRect();
TreePath path = tree.getClosestPathForLocation(rect.x, rect.y + rect.height);
[/Java]

damit kommst du an as letzte Node, das sichtbar ist.
Dann kannst du dir ausrechnen, wie viele du nachladen musst.

Idee 2:
Dein Model wird ja nach den Blättern gefragt, die gezeichnet werden sollen, oder?
Dann kennst du den Bereich, der gerade sichtbar ist und kannst den Rest, den du brauchst, nachladen.

. wie kann ich der Scrollbar vorgauckeln, dass sie mehr Scrollbereich zur Verfügung stellt, um das Hüpfen vom Scroll-Nob zu vermeiden?
Wenn dein Model von der Datenbank erfährt, wie viele Einträge der Ast hat, dann müsste doch das ScrollPane für eben diese größe ausgelegt werden, oder? Ist ja egal, ob das Model für jedes Blatt den Wert weiß, oder einfach NULL angibt. Sobalt man in den Bereich von NULL-Blättern scrollt, werden die nachgeladen, und haben ein Wert.
Ich hoffe, du kannst mir folgen, ich habs ab und zu mit meinen Erklärungen... 😉
 
Höchstwarscheinlich in
Java:
TreeModel.getChild(Object parent, int index)
TreeModel.getChildCount(Object parent);
aber ich mach zu selten etwas mit Bäumen. Ich bin eher mit Listen unterwegs.
Würde aber behaupten, dass das erstmal reicht. Wenn andere funktionalitäten, wie ändern von Einträgen und so dazu kommen, muss man sich mal die anderen funktionen anschauen
 

Zurück
Oben