Rafał G.

Rafał G. Programista
aplikacji
internetowych

Temat: Swing - JTable i sortowanie

Witam,

Próbuję w Swingu stworzyć prosty manager plików i chciałbym, że sorotwanie listy plików działało podobnie jak w Total Commander, czyli, żeby najpierw sortowane były katalogi.

Wiem, że do JTable, do każdej z kolumn można przypisać własny komparator, ale to raczej nie przejdzie, bo do niego jest przykazywana tylko aktaulna kolumna, czyli np. jak będą daty modyfikacji, to nie będę w stanie rozpoznać czy to plik czy katalog.

Najlepiej by było najpierw sorotować obiekty File, a potem przekazywać sformotowaną tablicę wynikową do modelu JTable. Tylko problem mam taki, że nie wiem jak ustawić "ręcznie" kierunek tych strzałeczek w kolumnach, które wskazują kierunek sortowania, nie wywołując sortowania JTable.

Może bardziej doświadczeni Koledzy coś podsuną?
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: Swing - JTable i sortowanie

Tak na szybko to setSortKeys() w RowSorter (czyli sortowanie po dwóch kolumnach).
Coś w tym stylu:


JTable table = new JTable(model);
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);

ArrayList<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING ));
sortKeys.add(new RowSorter.SortKey(1, SortOrder.ASCENDING ));

sorter.setSortKeys(sortKeys);
table.setRowSorter(sorter);


Prawdopodobnie kliknięcie na nagłówku kasuje ustawienia setSortKeys() więc próbowałbym nadpisać obsługę MouseClicked na nagłówku i ponowne wywołanie setSortKeys() w MouseListenerze.



Wyślij zaproszenie do