JTree Daten in DB schreiben am besten SQL

TJava

Bekanntes Mitglied
Hallo wie kann man einen JTree mit einer Datenbank synchron halten?
Es sollen dort objekte ausgelesen und im Jtree angezeigt werden.
Ebenso sollen die veränderungen z.b. Knotenhinzufügen etc. in die Datenbank aufgenommen werden.

Also das auslesen ist erstmal nicht so wichtig.
Hat jemand ein Beispiel wie ich das in eine DB schreibe oder einen vorschlag wie ich dabei vorgehen soll?

Das ganze soll beliebig erweiterbar sein.

Projekt
---->Ordner 1
---------->Subordner1
--------->Datei1.xml
---------->Subordner2
--------->Datei2.xml
---->Ordner 2
 

XHelp

Top Contributor
Du kannst dir ja für Projekte und Ordner Tabellen anlegen. Ein Projekt hat eine ID. Ordner hat u.a. "parent"-Eintrag. Dieser zeigt entweder auf ein Projekt oder auf einen anderen Ordner. Auf diese Weise kannst du recht einfach so eine Ordnerstruktur speichern.
 

TJava

Bekanntes Mitglied
Du kannst dir ja für Projekte und Ordner Tabellen anlegen. Ein Projekt hat eine ID. Ordner hat u.a. "parent"-Eintrag. Dieser zeigt entweder auf ein Projekt oder auf einen anderen Ordner. Auf diese Weise kannst du recht einfach so eine Ordnerstruktur speichern.



und wie mache ich das es beliebig vom user weitergeführt werden kann?
Root
----------> Projekt //hat einen parent und child
------------------->Ornder1 //hat parent
------------------->Ornder2 //hat parent
--------------------------->Kind1 // hat parent kein child

kann leider nicht mehr denken, bin seit heute morgen dabei :-D
mache mir morgen gedanken.

Vielleicht kannst du mir noch ein bisschen input geben für morgen früh
Es sollen auch Dateien in der DB liegen und die soll synchron sein mit dem baum.

Danke für deine Hilfe.
 

XHelp

Top Contributor
Sollen Dateien in der Datenbank liegen, oder nur Pfadangaben? Ganze Dateien da abzulegen ist hmmm.... nicht schön.
So die einfachste Möglichkeit ist 4 Tabellen:
Code:
-----------------------------
| Projects                  |
-----------------------------
| project_id | project_name |
-----------------------------

----------------------------------------
| Folders                              |
----------------------------------------
| folder_id | project_id | folder_name |
----------------------------------------

---------------------------------------------
| Subfolders                                |
---------------------------------------------
| subfolder_id | parent_id | subfolder_name |
---------------------------------------------

-----------------------------------
| Files                           |
-----------------------------------
| file_id | parent_id | file_path |
-----------------------------------
Damit kannst du beliebige Verzeichnisstrukturen darstellen. Folders und Subfolders kannst du auch noch bei bedarf zusammenführen.
 

TJava

Bekanntes Mitglied
Wie kann man das mit der parent_id verstehen? Also Ordner haben eine zugehörige Project_ID.
Das verstehe ich noch. Aber wie weiß ein Unterordner wozu ergehört? Wie ordnet man die zu?
 

TJava

Bekanntes Mitglied
Kann mir jemand erklären was hier genau passiert?
Java:
nodeSpecifier instanceof Object[]
Hier wird geprüft ob nodeSpecifier in Object castbar ist?

Wenn dem so ist
Java:
 child = processHierarchy((Object[]) nodeSpecifier);
Wird hier die Funktion processHierarchy nochmal aufgerufen und nodeSpecifier als Object gecastet

Dann weiß ich nicht wie diese rekursion abläuft.
Kann das jemand erklären?

Java:
private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
    DefaultMutableTreeNode node = new DefaultMutableTreeNode(hierarchy[0]);
    DefaultMutableTreeNode child;
    for (int i = 1; i < hierarchy.length; i++) {
      Object nodeSpecifier = hierarchy[i];
      if (nodeSpecifier instanceof Object[]) // Ie node with children
      {
        child = processHierarchy((Object[]) nodeSpecifier);
      } else {
        child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf
      }
      node.add(child);
    }
    return (node);
 

XHelp

Top Contributor
Mensch, das ist doch ein Forum und kein Chat...
parent_id gibt an, wozu der Subfolder gehört. Und generell in der Denkrichtung falsch. Du musst ja nicht wissen wozu ein Subfolder gehört, sondern welche Subfolder zu dem Ordner gehören.

Die rekursive Funktion läuft eigentlich genau so wie jede andere rekursive Funktion ab. Es wird solange aufgerufen, bis es sich um das letzte Objekt handelt und nicht um eine Menge von Objekten. Was genau verstehst du denn nicht an dem Algo?
 

TJava

Bekanntes Mitglied
Also der erste durchlauf

1.es wird das Object übergeben
Der erste Eintrag aus dem Object wird zum Root
Der zweite Eintrag aus dem Object wird zum Child

Java:
if (nodeSpecifier instanceof Object[]) // Ie node with children
      {
        child = processHierarchy((Object[]) nodeSpecifier);
      } else {
        child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf
      }
Verstehe den auf Aufruf nicht würde es nciht immer im Kreis laufen. Weil Object
Java:
nodeSpecifier = hierarchy[i];
ist ja immer true

Also was passiert hier Object nodeSpecifier = hierarchy;

Und das hier fragt ist nodeSpecifier überführbar in Object[]?
if (nodeSpecifier instanceof Object[])

Wenn ja
child = processHierarchy((Object[]) nodeSpecifier);
Aber das ist doch immer der Fall.
Also ich weiß einfach nicht wie der verlauf ist.
Einseits geht er ja nur eine Runde wenn er wieder bei
processHierarchy(Object[] hierarchy) aber in hierachie ja nur ein Objekt drin ist.
Kannst du vielleicht mal einfach den Ablauf beschreiben.
 

XHelp

Top Contributor
Weil Object
Java:
nodeSpecifier = hierarchy[i];
ist ja immer true

Das ist eine Zuweisung und kein boolischer Ausdruck. Das kann nicht true oder false sein.

Es wird eben geguckt ob es sich bei dem "kind"-Objekt wieder um ein Array handelt (also um mehrere Einträge), wenn ja wird die Methode rekursiv aufgerufen, sonst einfach ein Blatt erstellt.
Du kannst ja in dem Object-Array wieder Object-Array als Element haben.
Vllt hast du generell Probleme mit der Rekursion, aber da kannst du am besten in einem Buch nach einer Erklärung schauen.
 

TJava

Bekanntes Mitglied
Hallo, wie kann ich eine instanzvariable
weiterlaufen lassen?

Also ca. so
k=1;

DefaultMutableTreeNode k = new DefaultMutableTreeNode("Testtool");

k=2;

DefaultMutableTreeNode k = new DefaultMutableTreeNode("Testtool2");

???

MFG
 

XHelp

Top Contributor
"weiterlaufen lassen"?? Du kannst ja nicht der Variable
Code:
k
mal ein Zahlenwert zuweisen, mal ein Object.
 

TJava

Bekanntes Mitglied
wie erstellt man denn dann eine Objectliste?

for(int i = 0 ; i <= indexmax ; i++ )

DefaultMutableTreeNode i = new DefaultMutableTreeNode ("i")


Kannst du mir nicht noch irgendwie helfen?
Ich bekomme den Baum immer noch nicht hin.
 

XHelp

Top Contributor
Du darf dir für deine Fragen mehr Zeit als 5 Sekunden nehmen. Dann ergeben die Fragen auch hoffentlich einen Sinn. Für mich ist es jedenfalls ein Rätsel, was du in den lezten 2 Posts fragen willst.
 

TJava

Bekanntes Mitglied
Also ok :-D
mein Plan war es die Datenbank auszulesen jeder Datensatz hat eine parent_ID
NAME Parent_ID
Test1 0
Test2 0
Test3 1
Test4 2
....

Java:
//Es wird als erstes die max_Parent_ID ermittelt 
int k=1;

for ( int i =0 ; i<= max_Parent_ID; i++)
{
  // Hier kommt dann eine SQL Select Anweisung hin. Select Name from Tabelle where Parent_ID = i;
 node = i ;

        for(int j = k; rs.next(); j++){
            DefaultMutableTreeNode j = new DefaultMutableTreeNode("rs.getString(1)");
           node.add( j );
           k= j;
           }

Ich hoffe du verstehst wie ich das meine.


Ich möchte einfach die Tabelle als Baumstruktur abbilden.
Gibt es da eine andere möglichkeit? Die Tabelle kann immer verschieden aussehen.
Also immer unterschiedliche Tiefe haben mal 5 Knoten, mal 10 Knoten.

Ich hoffe es ist verständlicher, wenn nicht darf ich dich bei ICQ adden?
 

XHelp

Top Contributor
Der Code macht so kein Sinn. Du hast in der Schleife eine Zählvariable j und dann versuchst du noch ein Knoten j zu erstellen. Das geht natürlich nichts. Nimm einfach eine andere Variable für den Knoten.
Du kannst auch nicht einem Knoten node einfach mal ein Int-Wert zuweisen.
Außerdem erstellst du kein Knoten mit dem Wert aus der Datenbank, sondern nur einen Knoten mit dem Wort "rs.getString(1)".
Bevor du weiter machst lohnt es sich vllt mal ein paar Grundlagen zu Objekten und Variablen zu lesen.
 

TJava

Bekanntes Mitglied
rs.getString(1) Das natürlich so...

Ok ich probiere das nochmal mit einer anderen Variable.
DefaultMutableTreeNode node = new DefaultMutableTreeNode("rs.getString(1)");

Was sagst du denn zu der Vorgehensweise insgesamt? Wie macht man denn sonst so einen Baum?
 

TJava

Bekanntes Mitglied
Und wie lege ich dafür die Datenstruktur an, damit Sie rekursiv gelesen werden kann?
Kannst du dafür ein paar Beispiele geben?
Am besten für meine Beispieltabelle.
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Fang doch mal klein an und lass dir nur die Projekte ausgeben. Wenn es wirklich läuft, dann versuchst du zu dem jeweiligen Projekt die Ordner rauszulesen usw.
 

TJava

Bekanntes Mitglied
Es geht ja nur bekomme ich keine weiteren Hierachiestufen hin.

Weil immer alles an einen Knotengehängt werden muss.
Dieser ist aber immer statisch.

es sei denn man könnte irgenwie

nodealt.add(node) machen
aber hier ist es immer der root
wie kann man diesen knoten immer auf einen bestimmten setzen?
Das war auch der Grund warum ich die Instanzen laufen lassen wollten

Java:
for (int i = 0; i <= 3; i++) {
			try {
				String sql = " Select Name from student where parent_id=" + i;
				st = con.createStatement();
				rs = st.executeQuery(sql);

				for (int j = 0; rs.next(); j++) {
					DefaultMutableTreeNode node = new DefaultMutableTreeNode(
							rs.getString(1));
					root.add(node);

				}

Das war auch der Grund warum ich die Instanzen laufen lassen wollten
Java:
DefaultMutableTreeNode 0 = new DefaultMutableTreeNode("Testtool");
		int q = 4;
		for (int i = 0; i <= 3; i++) {
			try {
				String sql = " Select Name from student where parent_id=" + i;
				st = con.createStatement();
				rs = st.executeQuery(sql);

				for (int j = 0; rs.next(); j++) {
					DefaultMutableTreeNode node = new DefaultMutableTreeNode(
							rs.getString(1));
					dieser knoten muss immer der i.te Knotensein.add(node);

				}



Verstehst du wo das problem liegt?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
R Swing XML Datei in JTree, Problem mit Daten einlesen AWT, Swing, JavaFX & SWT 34
hdi JTree: interne Daten OK, Anzeige schwarze Magie AWT, Swing, JavaFX & SWT 2
S JTree mit Daten aus Model füllen, eigenes TreeModel (gute Dokumentation des Problems) AWT, Swing, JavaFX & SWT 2
D JList, JTree, JTextarea - Daten"refresh" AWT, Swing, JavaFX & SWT 15
FrittenFritze JTree, LazyLoading und "Rückwärtstraversion" AWT, Swing, JavaFX & SWT 3
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
W Swing Anzeigefehler bei JTree AWT, Swing, JavaFX & SWT 1
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
H Swing JTree: Zählt der rootNode mit? AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
R JTree behandeln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
J JTree updaten AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
T JTree mit Symbolen? AWT, Swing, JavaFX & SWT 8
R Anfängerfrage: Ansichten des JTree AWT, Swing, JavaFX & SWT 1
H Swing JTree Minimumgröße AWT, Swing, JavaFX & SWT 2
F Swing JTree + DiffUtils // Markierung Nodes aufheben AWT, Swing, JavaFX & SWT 2
I JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Swing JTree AWT, Swing, JavaFX & SWT 4
M Nodes in JTree nicht anzeigen AWT, Swing, JavaFX & SWT 0
T JTree mit Cloud verbinden AWT, Swing, JavaFX & SWT 0
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4
J Auf Dateien in JTree zugreifen AWT, Swing, JavaFX & SWT 15
F jTree.startEditingAtPath(path); funktioniert nicht bei eigenem CellEditor? AWT, Swing, JavaFX & SWT 8
D Swing JTree Steuerung AWT, Swing, JavaFX & SWT 11
S Swing JTree verwirrt mich AWT, Swing, JavaFX & SWT 2
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
J JTree speichern AWT, Swing, JavaFX & SWT 4
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
T JTree, Knoten mehrmals verwenden AWT, Swing, JavaFX & SWT 5
B JTree mit Ordneransicht in JPanel einbinden AWT, Swing, JavaFX & SWT 4
D JTree node reagiert bei Klick nicht immer AWT, Swing, JavaFX & SWT 2
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
D Mehrmals auf Node im JTree klicken AWT, Swing, JavaFX & SWT 2
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
N Swing FileFilter lässt JTree sich nicht öffnen AWT, Swing, JavaFX & SWT 2
X Swing 2 TreeModel und ein JTree synchronisieren AWT, Swing, JavaFX & SWT 3
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
X Swing JTree aktualisieren AWT, Swing, JavaFX & SWT 2
V Swing JTree - Umbenennen selbst handlen. AWT, Swing, JavaFX & SWT 2
E Übergebenem JTree Blätter hinzufügen AWT, Swing, JavaFX & SWT 2
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
A Swing JTree - Nodes expanden AWT, Swing, JavaFX & SWT 2
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
B JTree AWT, Swing, JavaFX & SWT 9
T Menüacceleratoren verschwinden bei JTree AWT, Swing, JavaFX & SWT 5
1 Swing JTree collapse child nodes AWT, Swing, JavaFX & SWT 4
B JTree - sehr individuell AWT, Swing, JavaFX & SWT 3
G Swing JTree - Verbindungslinien entfernen AWT, Swing, JavaFX & SWT 4
A Swing Herausfinden ob bei JTree Klick auf "+"/"-" anahnd x,y AWT, Swing, JavaFX & SWT 2
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
L Swing JTree wird nicht selektiert AWT, Swing, JavaFX & SWT 2
P [JTree] Markierhilfe der Drop-Location selber gestalten. AWT, Swing, JavaFX & SWT 4
A JTree aus Pfaden erzeugen AWT, Swing, JavaFX & SWT 3
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
X Datensätze in JTree AWT, Swing, JavaFX & SWT 2
L Update JTree Verzeichnisse AWT, Swing, JavaFX & SWT 9
E JTree Auswahl AWT, Swing, JavaFX & SWT 2
K JTree width der Treenodes auf 100% AWT, Swing, JavaFX & SWT 6
C JTree LastSelectedPathComponent benutzen? AWT, Swing, JavaFX & SWT 3
S Swing JTree Node Text nicht richtig angezeigt AWT, Swing, JavaFX & SWT 2
Landei Swing JTree mit "Tabellenzeilen"? AWT, Swing, JavaFX & SWT 5
Rudolf Swing JTree Node anhand vom Namen finden AWT, Swing, JavaFX & SWT 4
S JTree Elemente nach BaumLevel abspeichern AWT, Swing, JavaFX & SWT 2
Z JTree rootChilds AWT, Swing, JavaFX & SWT 2
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
S JTree & JComboBox - Elemente übers Fenster hinaus anzeigen AWT, Swing, JavaFX & SWT 9
E Swing JTree AWT, Swing, JavaFX & SWT 2
J Swing Lazy Loading in JTree wenn gescrollt wird AWT, Swing, JavaFX & SWT 3
N Knotenanordnung in JTree AWT, Swing, JavaFX & SWT 4
S JTree mit Liste zur Speicherung AWT, Swing, JavaFX & SWT 3
S Jtree CheckNode mit JPanel AWT, Swing, JavaFX & SWT 32
G JTree entfernt Nodes nicht AWT, Swing, JavaFX & SWT 12
C Swing JTree und TreeModel AWT, Swing, JavaFX & SWT 15
S Swing JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
J JTree AWT, Swing, JavaFX & SWT 2
R [JTree/DefaultTreeCellRenderer] eigenes Renderer-Panel, so breit wie der JTree AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
E Swing JTree setSelectedPath funktioniert nicht?! AWT, Swing, JavaFX & SWT 5
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
S JTree aus List<File> erstellen AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben