Jestem świadomy (sprawdziłem źródła;)), że sortowanie w JXTreeTable zostało wyłączone.Jak sprawić, by JXTreeTable sortowało swoje najlepsze elementy?
Chciałbym jednak pozwolić na sortowanie we wszystkich kolumnach w oparciu o wartości bezpośrednich elementów potomnych węzła głównego.
Say I mają strukturę takiego:
Name /Date /File UID
(Root)
|- Mr. X /1996/10/22/AE123F6D
|--- File1/2012/01/10/DFC2345Q
|--- File2/2012/01/11/D321FEC6
|- Mrs. Y/1975/03/03/G2GF35EZ
|--- File3/2012/02/29/35GERR32
|--- File4/2012/01/22/LKJY2342
.
.
.
Co chcę osiągnąć jest sortowanie na 3 kolumny tylko na węzłach pierwszego poziomu. Że chcę, aby posortować je według daty rosnąco, to kończy się tak:
Name /Date /File UID
(Root)
|- Mrs. Y/1975/03/03/G2GF35EZ
|--- File3/2012/02/29/35GERR32
|--- File4/2012/01/22/LKJY2342
|- Mr. X /1996/10/22/AE123F6D
|--- File1/2012/01/10/DFC2345Q
|--- File2/2012/01/11/D321FEC6
.
.
.
Jak ja to widzę, to ressembles do prostego sortowania tabeli (tak hierarchicznej ograniczenia przywoływana przez wyłączenie sortowania jest podniesiona).
widzę 2 możliwości, aby to zrobić:
- Ponownie włącz mechanizm sortowania dostępne w JXTable korzystać z wszystkiego, co jest już zrealizowane (sorter, sortowania, klikając nagłówki, ...) i sortuj tylko węzły pierwszego poziomu (ponieważ ich dzieci nadal będą miały tego samego rodzica).
- Zaimplementuj podstawowe elementy, których potrzebuję (sortując, klikając głównie nagłówki), a następnie wypisz listę modeli-wierszy-identyfikatorów w JXSortableTreeModel, które sortuję i zastępuję convertRowIndexToModel, co pozwoli (jak sądzę) wyświetlić moją pozycję posortowaną jako I chcieć.
Moim ulubionym jest oczywiście pierwszy, ale nie wiem, jak go osiągnąć. Pierwsze ograniczenie polega na tym, że nie wiem jak ponownie włączyć sortowanie jako JXTreeTable przesłania setSortable() (i wszystkie powiązane metody) i nie wiem jak uzyskać bezpośredni dostęp do implementacji metody w JXTable (to jest problem z Javą). Mogę po prostu skopiować kod JXTreeTable i usunąć przesłonięcia, ale nie jest to według mnie opcja.
Powiedz, jak to rozwiązać, w jaki sposób ograniczyć sortowanie do węzłów pierwszego poziomu? Nawet patrząc na źródło, nie mam pojęcia, jak to zrobić.
Po drugie, tracę wszystkie zalety istniejącego kodu, ale widzę praktyczny sposób osiągnięcia tego, co chcę (przynajmniej na razie.) Kto wie, czy nie będzie chciał filtrować danych we wszystkich wierszach?).
Czy jest inny sposób na wyjazd? Jeśli nie, które z moich rozwiązań powinienem wybrać? Wszelkie wnikliwe komentarze?
Wielkie dzięki z góry!
Dzięki! Przeglądałem źródła TreeTable i muszę powiedzieć, że wygląda obiecująco. Spróbuję lepiej to sprawdzić później :) – ixM
Rozwiązanie Aephyr działa dobrze, ale kod źródłowy praktycznie nie zawiera dokumentacji ani komentarzy. Demo to dobry przykład, ale wciąż natknąłem się na kilka wyjątków wyrzucanych na EDT. Bóle głowy związane z debugowaniem i obsługą tych i przyszłych problemów w kodzie takim jak ten są dla mnie dużym zaskoczeniem. – Nate
@nate to wystawa kodu od jednego z wielkich guru Swing, zajezdni kodu dla kilku forów, gdzie aephyr są członkami, nie ma pojęcia o wyjątkach EDT ani naruszeniach, musi być dodatkowy problem z twojego kodu :-) – mKorbel