"Explorer - Tree" wie geht das ?

zoidberger

Mitglied
Hallo.

Ich habe einen Java Client und einen C++ Server.
Der client hat schon eine grafische oberfläche, also ein Menu, in dem ich zum server connecten kann und auch wieder disconnecten.
Des weiteren habe ich das restliche Fenster geteilt. Links ist ein tree und rechts ein TextPane. Ich möchte nun dass der baum mir meinen Pfad C:\Temp anzeigt...
also ich kann vom client aus schon mit showdir das ganze ausgeben lassen und zum client zurückschicken lassen...
gibt es da etwas vorgefertigtes? also ein tree der genau das kann was ich brauche ?
oder muss ich das alles manuel "bauen" und das "dir" ergebnis auf "istdir" überprüfen und damit dann die ordner im tree erstellen und die anderen files als unterknoten einfügen?
ich glaube das wird verdammt kompliziert...

ich hoffe ihr könnt mir helfen :)
 
Hi,

Tatsächlich gibt es da meines Wissens nach nichts vorgefertigtes. Aber solange es nicht zu viele Ebenen sind (das würde viel Zeit in Anspruch nehmen), lässt sich das ganze so lösen:

Code:
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;

[...]

//steht für deine Ausgangsmethode
public void startMethod()
{
  File file = new File("ErsterOrdner/");

  DefaultMutableTreeNode root = new DefaultMutableTreeNode(file.getName());

  JTree tree = new JTree(root);

  generateTree(file,root);
}

public void generateTree(File root, DefaultMutableTreeNode base)
{
  File[] files = root.listFiles();

  for(File file : files)
  {
    if(file.isDir())
    {
      DefaultMutableTreeNode node = new DefaultMutableTreeNode(file.getName());
      generateTree(file,node);
    }
  }
}

Dieser Code müsste eigentlich das gewünschte Ziel herbeiführen.

hth

taouri
 
okay, das problem ist ja dass ich das dir vom server geschickt bekomme... also das sieht dann ungefähr so aus:
.;..;Testfile1.txt;Folder1;folder2;;
Mit einem filter speicher ich das alles in ein Array. Also ich schau wo ein ; steht und trenn es da.
Wie kann ich das jetzt überprüfen ob es ein Ordner oder eine File ist ?
kann ich dann immernoch
Code:
if(file.isDir())
benutzen ?
mir fehlts da grad irgendwie am verständnis...
 
So leid es mir tut, mir auch ;-) Ich müsste mal wissen, wie du die Daten GENAU bekommst. Ob sie zum Beispiel wirklich als Files vorliegen oder als Strings mit dem Namen. Wenn es Files sind, dann sollte der Tree wie oben beschrieben funktionieren, ansonsten wird das schwierig...

Gruß

taouri
 
also die daten liegen dem c++ Server vor, der client fragt sie mit einem "dir" ab und erhällt einen String. Die einzelnen Daten/Ordner werden mit ; getrennt und schon vor dem Senden in c++ auf isdir überprüft ;)
hat sich also eigentlichs chon erledigt :)
vielen dank !
 
Zurück