Rozwiń Zwiń Rozwiń problem z ładowaniem JTree Lazy

Zaimplementowałem drzewo za pomocą Lazy Loading. Węzły pierwszego poziomu są tworzone w czasie tworzenia drzewa, gdzie jako węzły potomne są tworzone tylko wtedy, gdy użytkownik rozszerza dowolny węzeł.

Dane pochodzą z DB i odpalamy zapytanie do bazy danych, aby zapełnić węzły potomne. Zaimplementowano TreeExpansionListener i wykorzystano zastąpioną implementację metody treeExpanded. Podczas rozbudowy usuwam wszystkie węzły potomne dla wybranego węzła, wykonuję zapytanie DB i dodaję rekordy jako potomne do wybranego węzła. Przed dodaniem dowolnego węzła do drzewa do węzła dodawany jest atrapa dziecka. Praca z DefaultMutableTreeNode.

Do tej pory tak dobrze, działało dobrze na każde oczekiwanie.

Problem 1 - Jak ty, jest to wywołanie DB na rozszerzenie, więc jeśli węzeł zostanie zwinięty i ponownie rozwinięty, będę robił wycieczkę DB i ponownie przetwarzał ponownie ... Chodzi o to, aby nie ładować węzłów świeżych, jeśli już są rozwinięte ...

Problem 2 - Gdybym musiał zrobić odświeżanie siły, tj. Ponownie załadować drzewo i zachować stan ekspansji. To działa już teraz ... Jak mogę osiągnąć to samo wraz z poprawką do problemu 1 powyżej?

Doceń każdą pomoc na ten temat.

questionAnswers(2)

yourAnswerToTheQuestion