GUI - Zugriff auf (netz) Laufwerke

devilmc

Mitglied
Hallo,

ich programmiere grade eine GUI für einen FTP-Client und habe das Problem
das ich nicht weiß wie ich den grafischen Zugriff auf die lokalen Laufwerke und auf den FTP-Server realisieren soll. Es geht dabei um die Anzeige der Dateien und Ordner.

Würde mich über Hilfe freuen

Mit freundlichen Grüßen
devilmc
 
Als Stichwort würde ich mal JTreeTable nennen.
Da gibt es mit Sicherheit auch schon fertige Frameworks bzw. Klassen - zum Swing-Standard gehört das leider noch nicht.
 
hi, also das mit dem Tree für die Lokale Festplatte habsch jetzt gerafft,
danke für das Super Bsp, nun muss ich dem Spaß nur noch für den Server hinkriegen, hoffe mal das klappt ansonsten meld ich mich nochmal
danke schonmal
 
so der baum funktioniert erstmal fürs lokal, aber wenn ich nach connecten zum ftp-server den neuen Tree aufbauen will bekomme ich nur ne NullPointerException mit dem hinweiß das die quelle nicht bekannt ist, meine host sieht wie folgt aus
ftp:\\ftp-home.hs-harz.de

ich habe den host jetzt versucht mit ftp://ftp-home.hs-harz.de
ohne dem ftp davor mit der workingdirectory dahin und jedesmal bekomme ich ne nullpointer exception...
und ich weiß net wieso
 
und wir können es dir nicht sagen, solange wir keinen Code sehen :)

Ich gehe mal davon aus, dass du versuchst einen Baum zu erstellen, bevor die Verbindung zum Host überhaupt steht.

Oder rührt die NullPointerException vom Verbindungsversuch.

Also wir brauchen:
-Code
-exakte Fehlermeldung

:)
 
also so doof bin ich nun wieder auch net die verbinung ist schon da, dann übergebe ich an meine scann methoden den rootpath und die methode File.listFiles(); liefert anscheinden null und wenn ich dann in meiner forschleife die files geholt werden sollen komtm die exception

PHP:
public void setDir( String sPath ) {  
      System.out.println(sPath);
        TreeFile myfile;
        _sDirectory = sPath;
        System.out.println("setDir:" +sPath);
      	File dir = new File( sPath );
        // File[] items = dir.listRoots();
        File[] items = dir.listFiles();
        // Umwandeln in Vector
        tabellenliste = new Vector(  );
        int i = comboFilter.getSelectedIndex();
        boolean bMitFilter=false;
        CFileFilter2 filefilter;
        if (i>=0) {
            // Filter suchen
            filefilter = _filterListe.elementAt(i);
            for (i=0; i<items.length; i++) {
                if ( items[i].isFile() && (!items[i].isHidden() )      ) {
                    // Filter einbauen
                    String sFileName = items[i].getAbsolutePath();
                    if (filefilter.accept(sFileName) ) {
                        myfile = new TreeFile( items[i] );
                        tabellenliste.add( myfile );  // clonen
                    }
                }
            }
        }
        else {
            // ohne Prüfung schneller
            for (i=0; i<items.length; i++) {
                if ( items[i].isFile() && (!items[i].isHidden() )      ) {
                   myfile = new TreeFile( items[i] );
                   tabellenliste.add( myfile );  // clonen
                }
            }
            
        }
                
        removeAll();
        setToolBar();

        tabelle = createTable();
        
        JScrollPane scrollpane = new JScrollPane(tabelle);
        
        scrollpane.addMouseListener(new java.awt.event.MouseAdapter() {

          public void mouseClicked(MouseEvent e) {
            tabelle_mouseClicked(e);
          }
        });
        
        add(scrollpane, BorderLayout.CENTER);
        
        // tabelle.setColumnSelectionAllowed(true);
        tabelle.setGridColor(Color.red);
        
       tabelle.setFont( new Font("Arial", Font.BOLD,18)  );
       // tabelle.updateUI();
       // tabelle.paintImmediately(  tabelle.getBounds() );  // not really
       
        tabelle.addMouseListener(new java.awt.event.MouseAdapter() {

          public void mouseClicked(MouseEvent e) {
            tabelle_mouseClicked(e);
          }
        });
       
       updateUI();  // dies würgt !
        
    }
 
public File[] listFiles()Returns an array of abstract pathnames denoting the files in the directory denoted by this abstract pathname.
If this abstract pathname does not denote a directory, then this method returns null.

Mach einfach mal ein sysout auf dein items.

Wenn das tatsächlich null ist, dann überprüfe mal deinen Pfad - evtl. kommt File mit deinem Server nicht zurecht.
 
hab den pfade mehrfach überprüft der is richtig, aber er findet keine files...

wie sollte denn der pfad aussehen den ich dann als root setze für den server da bin ich mri auch noch net sicher hab aber alle möglichen varianten rausgesucht
 
Danke euch allen für die hilfe hab das Problem gelöst.
Der Baum steht jetzt juhu...
hab euch den Code mal gepostet wie ich das Problem gelöst habe


Code:
/**
 * @autor: S. Törmer ( devilmc )
 * @version: 0.1b
 */
import java.awt.*;
import java.io.*;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

import sun.net.ftp.*;
import sun.net.*;
public class FTree extends JPanel implements  TreeSelectionListener, TreeExpansionListener {
 
  private JTree DirTree;
  private FtpClient ftp;
  private DefaultTreeModel treeModel;
  
  
  public FTree(FtpClient ftp, String host ){
    this.ftp=ftp;
    this.setLayout(new BorderLayout());
    setTree(host);
  }
  public void setTree(String host){
    System.out.println("setTree");
    FDefaultMutableTreeNode rootNode;     
    rootNode = BuildTree( host );
    System.out.println("setTree nach build tree");
    treeModel = new DefaultTreeModel(rootNode);
    DirTree = new javax.swing.JTree(rootNode);
    add(DirTree, BorderLayout.CENTER);
    DirTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    
    DirTree.setBorder(BorderFactory.createLineBorder(Color.black));
    DirTree.setShowsRootHandles(true);
    DirTree.putClientProperty("JTree.lineStyle","Horizontal");    
    DirTree.putClientProperty("JTree.lineStyle","Angled");  
    
    //  Listener hinzufuegen
    DirTree.addTreeSelectionListener(this);
    DirTree.addTreeExpansionListener(this);      
    DirTree.setSelectionRow(0);  
    DirTree.setFont( new Font("Arial", Font.BOLD,18)  );
  }
  public FDefaultMutableTreeNode BuildTree(String sPath) {
    FDefaultMutableTreeNode root;
    System.out.println("Buildtree");
    root = createMyNode(  sPath, sPath);  // new DefaultMutableTreeNode("root");
    Scan(root, sPath, sPath,0,0);
    System.out.println("nach scan");
    return root;
  }  // BuildTree
  
  public void Scan(FDefaultMutableTreeNode parent, String sPath, String sName, int Stufe,int AnzSubDir){
    System.out.println("scan");
    FDefaultMutableTreeNode node;    
    FTreeNode myNode;
    
    
    File dir = new File(sPath);
    File[] files;
    TelnetInputStream in =null;
    Vector fileList;
    try{
    BufferedReader br;
    fileList = new Vector();
    String line = new String();
    in = ftp.nameList("");
    br = new BufferedReader(new InputStreamReader(in));
    while ( (line = br.readLine()) != null) {
    StringTokenizer strtok = new StringTokenizer(line);
    fileList.add(line);
    
    }
    in.close();
    files = new File[fileList.size()];
    for ( int i=0; i<fileList.size(); i++){
      files[i]= new File(fileList.elementAt(i).toString());
    }
    System.out.println(files[0].toString());
    System.out.println(files[0].isDirectory());
    System.out.println("vor files != null");
    if ( files != null ) {
      for (int i=0; i<files.length; i++) {
        System.out.println("in forschleife");
        try{
          System.out.println("in try: " +files[i].getName());
          System.out.println(ftp.getResponseString());
          if(Stufe>1){
            
            AnzSubDir++;
            parent.setAnzSubdir(AnzSubDir);
            return;
          }
          ftp.cd(files[i].getName());
          System.out.println("nach cd");
          node = createMyNode(files[i].getName(),files[i].getName());
          parent.add(node);
          Scan(node,files[i].getName(),files[i].getName(),Stufe+1,AnzSubDir);
          System.out.println("vor cdUp");
          
          
          ftp.cdUp();
          System.out.println("nach cdup");
        }
        catch(IOException e){
          System.out.println(files[i].getName());
          System.err.println(e);
        }
        System.out.println("nach try");
        
      }
    }
    System.out.println("nach cd");
    System.out.println(ftp.pwd());
    }
    catch(IOException e){
      System.err.println(e);
    }
   
  }
    
    
    
  
  
  public FDefaultMutableTreeNode createMyNode(String sPath,  String nodeString) {
    FTreeNode myNode;
    FDefaultMutableTreeNode Node;

    myNode = new  FTreeNode(sPath, nodeString);
    Node = new FDefaultMutableTreeNode(myNode);
    // Node = new DefaultMutableTreeNode(nodeString);
    //Node.setUserObject(myNode);
    return Node;
  }
  
  
  public void valueChanged(TreeSelectionEvent e) {
    
  }
  public void treeExpanded(TreeExpansionEvent event){  
  }//treeExpanded
  public void treeCollapsed(TreeExpansionEvent event){
  }//treeCollapsed
}
 
Zurück