Avatar billede skillzor Nybegynder
26. maj 2007 - 20:36 Der er 4 kommentarer og
1 løsning

JTree + rekursiv metode

Hej,

Jeg har et JTree som skal vise noget data over nogle grupper for mig.
Lige nu viser den roden + den næste gruppe under roden, derefter kan den ikke finde den næste gruppe, der kan jeg se at tmp = null, hvilket ikke er meningen.

Jeg har følgende metode til at oprette træet:

    private void getTree()
  {
    String start = "Alle";

    DefaultMutableTreeNode rod = new DefaultMutableTreeNode(start);

    JTree jTree1 = new JTree(rod);

    getData(start, rod);

    jScrollPane2.getViewport().add(jTree1, null);
  }

Den rekursive metode til at finde grupperne:

private void getData(String lib, DefaultMutableTreeNode tree)
  {
      if (tree != null) {
      IFDBUndergruppe dBUndergruppe = new DBUndergruppe();   

      Undergruppe tmp = new Undergruppe();
      tmp = dBUndergruppe.findUndergruppe(lib);
              System.out.println("TMP: " + tmp); 
      if(tmp != null) {
          String element = tmp.getUndergruppe();
          DefaultMutableTreeNode node = new DefaultMutableTreeNode(element);
          tree.add(node);
          getData(element, node);   
      }
  }
      else { return; }
  }

Lige nu har hver gruppe kun 1 undergruppe i databasen, Det er dog meningen at den skal kunne have mere end 1, hvilket getData skal kunne finde også.
findUndergruppe(String navn) returnerer et objekt af typen Undergruppe.
getUndergruppe() returnerer en String hvori navnet på den gruppens undergruppe er repræsenteret.

I Databasen er en Undergruppe oprettet med et Navn på gruppen selv, og Undergruppe som er navnet på Undergruppen til gruppen.

Det var en farlig masse om grupper og undergrupper, men jeg håber i forstår, ellers skal jeg gerne uddybe.
Avatar billede mikkelbm Nybegynder
27. maj 2007 - 00:31 #1
"der kan jeg se at tmp = null, hvilket ikke er meningen."

Det kunne jo tyde på at det er i din dBUndergruppe.find metode det er galt. Har du prøvet at skrive 'lib' ud for at se om det er det forventede?
Avatar billede skillzor Nybegynder
27. maj 2007 - 02:34 #2
Har prøvet at skrive lib ud før if (tree != null),
der viser den næste element korrekt, men når den kommer til at skulle skrive tmp ud viser den stadigt null.

Jeg kan ikke helt overskue det, for det virker fint når den henter den første, men ikke den næste.
Avatar billede mikkelbm Nybegynder
27. maj 2007 - 11:17 #3
Hvis tmp er null efter dit kald til databasen, må det jo nødvendigvis være fordi at din dBUndergruppe.findUndergruppe metode ikke kan finde noget der modsvarer det den får ned (lib). Så du bliver nødt til at poste den metode, for at vi kan finde frem til hvad der går galt.
Avatar billede skillzor Nybegynder
27. maj 2007 - 17:50 #4
Nu har jeg testet det hele igennem, det viste sig at det egentligt fungerede okay.
Fejlen bestod i at der var en slåfejl i mine testdata i databasen :/
Jeg må have set mig blind på hvad det var der skete, men det virker hvertfald nu!

Du fik mig til at finde fejlen Mikkel, så lig et svar for point :)
Avatar billede mikkelbm Nybegynder
27. maj 2007 - 18:35 #5
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester