R
RagnarZero
Gast
Hallo allerseits!
Ich bin mal wieder (wie so oft) an einer Stelle, wo alles einfach nich das tut, was ich will. Nur diesmal finde ich den Fehler einfach nicht, denn meiner Meinung nach müsste das Teil nach allen Regeln der Logik so laufen.
Was ich machen will, ist mithilfe des JTree Objekts aus Dateien einen Baum erstellen. Klingt erstmal leicht, nur ich möchte diesen aus selbst kreierten Dateien heraus erstellen lassen.
Das ist, wenns fertig wird für einen MP3-Player und der Baum wird ein Genre-Baum.
Eine Datei ist Typischerweise so ausgebaut:
Also als Parent zB Rock und dann als Child Punkrock, oder so
Meine Klasse zum erstellen dieser Files funktioniert eigentlich wunderbar, da liegt das Problem nicht.
Nun hab ich mir nämlich gedacht ich bau erstmal eine Schleife, die die Obergenres (zB Rock) herausfindet und die wiederrum eine Methode aufruft, die rekursiv ist und die Subgenres und deren Subgenres herausfindet.
Das ist meine Parent-herausfinde-schleife:
Auch das funktionier soweit, doch jetzt kommt der haken:
Das Problem hierbei ist, dass er nur einen Zweig des Trees durchgeht, also er findet ein Subgenre und dessen Subgenre und soweiter aber er findet immer nur eins, auch wenn es mehrere gibt.
Ich dachte bisher immer, wenn er die Methode ausgeführt hat, kehrt er zu dem Punkt, an dem sie aufgerufen wird zurück, also er würde dann in dem Falle oben wieder an die Stelle in der for-Schleife springen, wo er aufgehört hat. Aber anscheinend wird die for-schleife bei einem Fund sofort für beendet erklärt und daher findet er immer nur ein Subgenre.
Falls irgendjemand eine Idee hat, was ich falsch gemacht hab oder wenn es so nicht funktioniert, was ich sonst machen könnte wäre ich sehr dankbar, ich bin nämlich langsam am verzweifeln
Ich bin mal wieder (wie so oft) an einer Stelle, wo alles einfach nich das tut, was ich will. Nur diesmal finde ich den Fehler einfach nicht, denn meiner Meinung nach müsste das Teil nach allen Regeln der Logik so laufen.
Was ich machen will, ist mithilfe des JTree Objekts aus Dateien einen Baum erstellen. Klingt erstmal leicht, nur ich möchte diesen aus selbst kreierten Dateien heraus erstellen lassen.
Das ist, wenns fertig wird für einen MP3-Player und der Baum wird ein Genre-Baum.
Eine Datei ist Typischerweise so ausgebaut:
Code:
[Parent-Genre]
[Sub-Genre]
Also als Parent zB Rock und dann als Child Punkrock, oder so
Meine Klasse zum erstellen dieser Files funktioniert eigentlich wunderbar, da liegt das Problem nicht.
Nun hab ich mir nämlich gedacht ich bau erstmal eine Schleife, die die Obergenres (zB Rock) herausfindet und die wiederrum eine Methode aufruft, die rekursiv ist und die Subgenres und deren Subgenres herausfindet.
Das ist meine Parent-herausfinde-schleife:
Code:
for(int i = 0; i<genres.length;i++){
//genres ist hier das array mit den ganzen genredateipfaden, die zuvor gefunden wurden.
if(GF.checkRoot(genrePath,genres[i])==true){
//checkRoot schaut, ob das gerade untersuchte Genre ein Obergenre ist
createTree(genres[i],top);
}
}
Auch das funktionier soweit, doch jetzt kommt der haken:
Code:
private void createTree(String genreName, DefaultMutableTreeNode rootGenre){
//genreName.length() -6 ist hierbei der Name des gefundenen Subgenres
subGenre = new DefaultMutableTreeNode(genreName.substring(0,genreName.length() -6));
//Das rootGenre ist beim ersten Mal top, also die spitze des Trees
rootGenre.add(subGenre);
//RootGenres suchen
for(int k=0; k<genres.length;k++){
if(GF.checkRoot(genrePath,genres[k])==false && GF.readGenreParent(genrePath,genres[k]).equals(subGenre.toString()) ){
//Dieses IF trifft ein, wenn er zu dem Gefundenen Genre ein weiteres Subgenre gefunden hat..
//..und führt daraufhin die Methode nochmal mit diesem aus, solange bis es nix mehr gibt
createTree(genres[k],subGenre);
}
}
}
Das Problem hierbei ist, dass er nur einen Zweig des Trees durchgeht, also er findet ein Subgenre und dessen Subgenre und soweiter aber er findet immer nur eins, auch wenn es mehrere gibt.
Ich dachte bisher immer, wenn er die Methode ausgeführt hat, kehrt er zu dem Punkt, an dem sie aufgerufen wird zurück, also er würde dann in dem Falle oben wieder an die Stelle in der for-Schleife springen, wo er aufgehört hat. Aber anscheinend wird die for-schleife bei einem Fund sofort für beendet erklärt und daher findet er immer nur ein Subgenre.
Falls irgendjemand eine Idee hat, was ich falsch gemacht hab oder wenn es so nicht funktioniert, was ich sonst machen könnte wäre ich sehr dankbar, ich bin nämlich langsam am verzweifeln