JTree automatisch sortieren lassen

Status
Nicht offen für weitere Antworten.

gpxricky

Mitglied
Hallo,

mit dem JTree kenne ich mich einigermaßen aus und es gibt auch gute Tutorials dazu, wie man Elemente aus dem Baum löscht und in den Baum einfügt.
Ich habe es noch nicht probiert, aber ich bin mir ziemlich sicher, dass, wenn ich eine Klasse, die von DefaultMutableTreeNode abgeleitet ist, ans TreeModel übergebe, alles trotzdem funktioniert (wobei ich wahrscheinlich dann die toString-Methode überschreiben muss, damit was vernünftiges im Baum angezeigt wird).

Nehmen wir als Beispiel also einmal folgende Klasse:

Code:
class Knoten extends DefaultMutableTreeNode {
  String name;
  int nummer;
  boolean markiert;

  public Knoten (String nm, int nr) {
    name = new String (nm);
    nummer = nr;
  }

  String toString () {
    return name;
  }
}

// Nun baue ich meinen Baum auf:

Knoten node = new Knoten ("Wurzel", 0);
node.add(new Knoten ("Unterwurzel 1", 1));
node.add(new Knoten ("Unterwurzel 3", 3));
Knoten node_2 = new Knoten ("Unterwurzel 2", 2);
node_2.add(new Knoten ("Blatt 1", 0));
node_2.add(new Knoten ("Blatt 3", 3));
node_2.add(new Knoten ("Blatt 5", 1));
node.add (node_2);

// So, wenn ich fertig bin, erstelle ich nun den JTree:

JTree Baum = new JTree (new TreeModel (node));

Das Problem ist aber, dass mein Baum ja nun folgendes anzeigt:

Wurzel
|
- Unterwurzel 1
- Unterwurzel 3
- Unterwurzel 2
|
- Blatt 1
- Blatt 3
- Blatt 5

Er soll aber eigentlich nach Knoten.nummer sortiert ausgegeben werden und wenn ich später einen Knoten z.B. unter Untwurzel 2 erzeuge, soll er auch nach nummer sortiert eingeordnet werden!

Wie mache ich es also, das folgender Baum erscheint, ohne dass ich an meiner Baum-Füllen-Methode die Reihenfolge der Einfügungen ändere:

Wurzel
|
- Unterwurzel 1
- Unterwurzel 2
|
- Blatt 1
- Blatt 5
- Blatt 3
- Unterwurzel 3


Vielen Dank für eure Mühe

Liebe Grüße

Kevin
 

AlArenal

Top Contributor
Sortierung ist etwas, das mir bald auch noch begegnen wird. Allerdings benutze ich eine eigene Implementierung von TreeModel und benutze meine eigenen Interfaces/Klassen als Nodes.

Derzeit habe ich noch nicht mehr als ein paar lose Überlegungen zum Thema. Es sieht bei mir so aus, dass jeder Node eine Liste seiner Children mit sich führt und der Node über Methoden á la Object getChild(int index) und int getChildCount() verfügt. Der Trick ist nun ganz einfach getChild() nicht direkt auf die Liste zugreifen zu lassen, sondern entweder in dieser Methode eine Sortierung durchzuführen, oder aber in einer performanteren Version, eine zweite Liste, die nach eigenen Wünschen sortiert ist, zu führen, die Referenzen auf die Children enthalten.

Angepasst werden müssen dann auch noch die Methoden zum Hinzufügen und Entfernen von Nodes / Children. Stelle ich mir jetzt aber alles nicht so besonders knifflig vor.

Nehmen wir mal das Gedankenspiel, wir würden uns einen Datei-Browser erstellen. Nun möchten wir im Baum immer alle Verzeichnisse vor den Dateien und beides jeweils alphabetisch sortiert haben. Kann man sich wie gesagt volldynamisch zusammenbasteln (alle Children liegen unsortiert in einer Liste und bei Zugriff wird nach eigener Sortierung agiert) oder man man kann in dem Node die Children intern in zwei Listen pfelgen (eine für Verzeichisse, eine für Dateien)... Eigentlich gibts hier Unmengen an Möglichkeiten. Wie man es letzten Endes umsetzt ist aber immer sehr spezifisch und dadurch, denke ich, nicht allgemeingültig abhandelbar.
 

The_God

Aktives Mitglied
hatte bei meinem CD archivierer das selbe Problem. Am einfachsten gehts wenn du dir eine eigene Liste schreibst wo du die Sortierung vornimmst. und die gibst du dann den JTree

wenn du das über das abstracte Table model implementierst wirds ein wenig aufwendiger.


Code:
public class myList{
Node head;

public myList(){
  head = null;
}
class Node(String val){
String val;
Node next;

... usw ...
}

//... Methoden
}
 

gpxricky

Mitglied
wie kann ich denn einem JTree ne Liste übergeben? Geht das denn? Und woher bildet der JTree dann seinen Baum auf?

Gibts da nicht irgendwo n Beispiel dafür?

Vielen Dank für Eure Hilfe

gpxricky
 

gpxricky

Mitglied
Vielen Dank für eure Hilfe! ;-)

Ich glaube, ich bin im Internet auf die richtige Komponente gestoßen!
Für alle, die sich automatisch sortierende JTree's wünschen, verweise ich auf die .useful Library, die die Klasse SortedTreeNode implementiert hat! Dort genügt es dann einfach, die Methode compareTo zu überschreiben.

Grüßle

gpxricky
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JTree: Nodes automatisch öffnen Allgemeine Java-Themen 2
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
F JTree: Nodes dynamisch anlegen via LinkedHashMap Allgemeine Java-Themen 2
E Swing Jtree Allgemeine Java-Themen 9
R JTree - Mehrere Roots Allgemeine Java-Themen 6
DStrohma Icons in JTree Nodes weiter nach rechts rücken Allgemeine Java-Themen 2
M JTree aktualisieren nach Mausklick Allgemeine Java-Themen 12
DStrohma Jede node in JTree mit eigenem Icon Allgemeine Java-Themen 7
Benji0815 Verzeichnis wie im Windows Explorer in einem JTree anzeigen Allgemeine Java-Themen 6
S JAVA JTree rekursiv umschreiben Allgemeine Java-Themen 5
S Suche im JTree nach Neuaufbau Allgemeine Java-Themen 4
N JTree nicht genutzte Pfade schließen Allgemeine Java-Themen 2
G JTree Node löschen Allgemeine Java-Themen 2
G JTree Node verschieben Allgemeine Java-Themen 2
MQue leerer JTree Allgemeine Java-Themen 6
MQue JTree Allgemeine Java-Themen 6
MQue JCheckBox in JTree Allgemeine Java-Themen 2
F JTree in Jsp Allgemeine Java-Themen 2
T Äquivalent zu JTree Allgemeine Java-Themen 4
C JTree: ActionListener auf die Nodes Allgemeine Java-Themen 3
M JTree mit Rechtsklick markieren Allgemeine Java-Themen 4
P JTree/ Nodes einfügen Allgemeine Java-Themen 2
P JTree Allgemeine Java-Themen 6
P aus JTree eine XML- Datei Allgemeine Java-Themen 6
P Vector auf JTree Allgemeine Java-Themen 6
P JTree Farbe Allgemeine Java-Themen 14
S JTree selektion erkennen und drauf reagieren Allgemeine Java-Themen 2
E JTree (schonwieder) - TreeCellEditor Allgemeine Java-Themen 9
E JTree - einzelnes Element (Knoten) editieren Allgemeine Java-Themen 2
E JTree - Selektieren mit Rechtsklick Allgemeine Java-Themen 15
P JTree ID vergeben Allgemeine Java-Themen 3
P JTree Allgemeine Java-Themen 4
P JTree/ JTabbedPane Allgemeine Java-Themen 34
L JTree Allgemeine Java-Themen 23
E root JTree Allgemeine Java-Themen 2
E Child in JTree hinzufügen Allgemeine Java-Themen 4
E JTree in NetBeans Allgemeine Java-Themen 2
R Objekt an Knoten von JTree anhaengen Allgemeine Java-Themen 2
R Daten aus Baum entsprechend in jTree einfuegen Allgemeine Java-Themen 2
T Jtree zu langsam beim klappen Allgemeine Java-Themen 8
S JTree - Brett vor'm Kopp Allgemeine Java-Themen 19
G Baumhierarchie in JTree eintragen Allgemeine Java-Themen 4
K JTree - Knoten expandieren Allgemeine Java-Themen 4
K JTree Inhalt löschen und Anzeige aktualisieren Allgemeine Java-Themen 13
Luma Diskettenlaufwerk rattert los bei Eintrag in JTree Allgemeine Java-Themen 6
G in Jtree suchen Allgemeine Java-Themen 2
K JTree plus eigener FileLoader Allgemeine Java-Themen 2
H Wie stellt ein JTree fest, wo etwas eingehängt werden soll? Allgemeine Java-Themen 2
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
P Strukturänderungen/abnormalien in Logfiles automatisch erkennen Allgemeine Java-Themen 5
F Java automatisch ausführen Allgemeine Java-Themen 3
ms_cikar RS232 Serielle Baudrate automatisch einstellen Allgemeine Java-Themen 1
M String automatisch in nächste Zeile umbrechen (Graphics) Allgemeine Java-Themen 6
L Prozess automatisch beenden Allgemeine Java-Themen 8
T Automatisch Mails versenden Allgemeine Java-Themen 4
B automatisch benannte arrays erstellen Allgemeine Java-Themen 9
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
F paintComponent() nicht automatisch ausführen? Allgemeine Java-Themen 5
das-mo Dokument automatisch ausfüllen Allgemeine Java-Themen 8
L Links aus dem Inet-Browser automatisch anklicken lassen Allgemeine Java-Themen 5
A Jasperreports automatisch ausführen lassen Allgemeine Java-Themen 5
A Login-Daten Formular automatisch ausfüllen Allgemeine Java-Themen 10
S Programm das automatisch ungenutzten Source-Code entfernt..? Allgemeine Java-Themen 4
Iron Monkey JNLP nach Änderung automatisch aktualisieren Allgemeine Java-Themen 18
F Klassendiagramm / UML Diagramm automatisch erstellen Allgemeine Java-Themen 3
F WebBrowser Button automatisch drücken Allgemeine Java-Themen 5
K Eclipse automatisch Projekte cleanen und builden lassen Allgemeine Java-Themen 5
TiME-SPLiNTER Binary BufferedImage automatisch croppen Allgemeine Java-Themen 4
N Jlabel automatisch anpassen Allgemeine Java-Themen 3
M Java Klasse automatisch starten Allgemeine Java-Themen 3
V Java-Programm automatisch starten Allgemeine Java-Themen 2
B Abfrage ob JRE installiert ist, JAR automatisch starten Allgemeine Java-Themen 5
S Automatisch SerialUIDs einfuegen? Allgemeine Java-Themen 2
M KML Datei automatisch erzeugen Allgemeine Java-Themen 3
G Objekte automatisch casten Allgemeine Java-Themen 10
Escorter StringBuilder automatisch? Allgemeine Java-Themen 7
C Bilder automatisch bearbeiten/manipulieren Allgemeine Java-Themen 2
J Itext , Spaltenbreite automatisch anpassen ? Allgemeine Java-Themen 4
X Punktwolke im euklidischen Raum automatisch clustern. Allgemeine Java-Themen 2
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
P Button automatisch drücken Allgemeine Java-Themen 5
G Dienst automatisch angehalten Allgemeine Java-Themen 2
D IE6 schließt automatisch nach Installieren des Java 1.6.0_02 Allgemeine Java-Themen 7
G JRE automatisch downloaden und installieren Allgemeine Java-Themen 4
L Java app läuft under win xp, automatisch auch unter vista32 Allgemeine Java-Themen 14
G UML automatisch erzeugen lassen Allgemeine Java-Themen 2
S Java greif automatisch auf Classpath zu Allgemeine Java-Themen 2
B Html Formulare mittels Java automatisch senden Allgemeine Java-Themen 5
B Schlüssel von Java automatisch generieren lassen. Allgemeine Java-Themen 4
L Per IText erstelltes PDF automatisch drucken Allgemeine Java-Themen 13
S Array "automatisch" füllen Allgemeine Java-Themen 5
G JTextArea im JScrollpane automatisch mitscrollen Allgemeine Java-Themen 4
M Eingelesene Bild wird automatisch skaliert Allgemeine Java-Themen 4
M Encoding automatisch erkennen Allgemeine Java-Themen 4
G Bedeutet Java automatisch OpenSource? Allgemeine Java-Themen 18
F JTextField Eingabe automatisch bestaetigen Allgemeine Java-Themen 17
G Tasten a-z automatisch drücken Allgemeine Java-Themen 2
M automatisch Code umformatieren? Allgemeine Java-Themen 12
A Endlosschleifen automatisch erkennen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben