Zunächst einmal fängt man bei der Wurzel an zu zählen (mit 0).
Wenn man einem Satz Daten in einem TreeModel darstellen will, kann man entweder mit Brute Force arbeiten, sich die Daten rausziehen, in ein eigene Model packen und fluchen und schwitzen, sobald man mehr machen will als nur reine Anzeige...
...oder aber man benutzt das TreeModel mit allen Daten als Datenquelle für abgeleitete TreeModels, welche Filterung und Sortierung übernehmen und deren Methoden dynamisch die ganzen TreePaths für die Event-Listener (JTree) umbiegen.
Ich hatte da in meinem nicht mehr existenten Wiki mal nen Artikel zusammengeschustert, der das so halbwegs beschreibt, weil ich sowas in ner Demo-Anwendung auch mal brauchte. Wenn man sich mal reingefräst hat wie JTree/TreeModel und ihre Events zusammenarbeiten, ist es eigentlich ne ganz logische Geschichte.