Wie man ein JXTreeTable seine Top-Elemente sortiert

8

Ich bin mir bewusst (ich habe mir die Quellen angeschaut;)) dass das Sortieren auf JXTreeTable deaktiviert wurde.

Ich möchte jedoch die Sortierung aller Spalten nur auf der Grundlage der Werte der direkten untergeordneten Elemente des Stammknotens zulassen.

Sagen wir, ich habe eine Struktur wie folgt:

%Vor%

Was ich erreichen möchte, ist das Sortieren auf den 3 Spalten nur auf Knoten der ersten Ebene. Sagen wir, ich möchte es nach aufsteigendem Datum sortieren, es würde so enden:

%Vor%

Wie ich es sehe, ähnelt es der einfachen Tabellensortierung (damit wird die hierarchische Begrenzung aufgehoben, die zum Deaktivieren der Sortierung aufgerufen wird).

Ich sehe 2 Möglichkeiten, das zu tun:

  1. Aktivieren Sie den in JXTable verfügbaren Sortiermechanismus erneut, um von allem zu profitieren, was bereits implementiert ist (Sortieren, Sortieren durch Klicken auf die Kopfzeilen, ...) und sortieren Sie nur Knoten der ersten Ebene (da ihre Kinder immer noch die gleiches Elternteil).
  2. Implementiere die grundlegenden Dinge, die ich brauche (sortiere, indem ich meistens auf die Header klicke), habe eine Liste von Model-row-ids in JXSortableTreeModel, die ich in convertRowIndexToModel sortiere und überschreibe will.

Mein Favorit ist natürlich der erste, aber ich weiß nicht, wie ich es erreichen soll. Die erste Einschränkung ist, dass ich nicht weiß, wie ich die Sortierung wieder aktivieren kann, da JXTreeTable setSortable () (und alle zugehörigen Methoden) überschreibt und ich nicht direkt auf die Implementierung der Methode in JXTable zugreifen kann (das ist ein Java-Problem) ). Ich könnte einfach den Code von JXTreeTable kopieren und die Überschreibungen entfernen, aber das ist meiner Meinung nach keine Option.

Sagen wir, ich löse das, wie würde ich die Sortierung auf die Knoten der ersten Ebene beschränken? Selbst nachdem ich die Quelle angeschaut habe, bin ich ziemlich ratlos, wie das geht.

Mit dem zweiten verliere ich alle Vorteile des bestehenden Codes, aber ich sehe einen praktischen Weg, um das zu erreichen, was ich will (zumindest jetzt. Wer weiß, ob die Daten nicht in allen Zeilen gefiltert werden sollen?) .

Gibt es noch einen anderen Weg? Wenn nicht, welche meiner Lösungen sollte ich wählen? Irgendwelche aufschlussreichen Kommentare?

Vielen Dank im Voraus!

    
ixM 29.02.2012, 12:53
quelle

2 Antworten

3

vielleicht TreeTable folgenden Weg (e) von Aephyr, während dieser Swing Guru mit Nimbus Look and Feel gespielt auch, Code für lustige Nimbus enthalten

    
mKorbel 01.03.2012, 14:29
quelle
1

Ich habe es geschafft, indem ich auf der Knotenebene gespielt habe. Dies ist eine Methode, die ich in meinem Baumtabellenknoten erstellt habe, der AbstractMutableTreeTableNode erweitert:

%Vor%

Hoffe das hilft jemand anderem, da ich denke der Thread Opener hat es schon herausgefunden.

    
Alex Burdusel 09.08.2013 17:31
quelle