Swing FileFilter lässt JTree sich nicht öffnen

N4pst3r

Mitglied
Hiho
ich soll mir nen FileFilter für Bildtypen schreiben damit man in einem Baumverzeichnis nur Bilder (und Ordner) auswählen kann. Zwar funktioniert der FileFilter aber nur füe die ersten zwei Ebenen. Wenn ich danach einen Knoten öffnen möchte werden wieder alle Dateitypen angezeigt. Ich verstehe nicht woran das liegen könnte ???:L

Hier mal der Code des FileFilter:
Java:
public class FileFilterDateitypen implements FileFilter {

  @Override
  public boolean accept( File f ) {
    if( JRadioButtonAlle.isSelected() )
      return true;
      
    else if( JRadioButtonBilder.isSelected() ) {
      return f.isDirectory() 
        || f.getName().toLowerCase().endsWith( ".gif" )
        || f.getName().toLowerCase().endsWith( ".giff" )
        || f.getName().toLowerCase().endsWith( ".jpg" )
        || f.getName().toLowerCase().endsWith( ".jpeg" )
        || f.getName().toLowerCase().endsWith( ".jpe" )
        || f.getName().toLowerCase().endsWith( ".jfif" )
        || f.getName().toLowerCase().endsWith( ".png" )
        || f.getName().toLowerCase().endsWith( ".tif" )
        || f.getName().toLowerCase().endsWith( ".tiff" );
    }

    else
      return true;
  }
}

und hier nochmal der relevante Code vom JTree (von Kirill Grouchnikov), wo der FileFilter eingesetzt wird:
Java:
public FileTreeNode(File file, boolean isFileSystemRoot, TreeNode parent) {
  this.file = file;
  this.isFileSystemRoot = isFileSystemRoot;
  this.parent = parent;
  this.children = this.file.listFiles( new FileFilterDateitypen() ); //Nur hier kann der FileFilter gesetzt werden
  if (this.children == null)
    this.children = new File[0];
}

um das problem nochmal zu veranschaulichen:
wenn ich jetzt den Baum mit dem FileFilter aufrufe wird selbst wenn "JRadioButtonAlle" gewählt ist nur in der ersten Ebene nach dem Root und in der darunterliegenden (z.B.: root/<dateien> und root/C:/<dateien>) die Dateitypen gefiltert obwohl der Filter für JEDEN Node true zurückgibt. In nachfolgenden Ebenen werden wieder alle Dateien wählbar.

Mag mir da jemand die Augen öffnen?

Gruß
N4pst3r
 
Vorausgesetzt die im FileFilter abgefragten Bedingungen sind korrekt funktioniert der FileFilter. Warum im Baum etwas angezeigt wird oder nicht lässt sich anhand des Codes schlecht sagen. Dazu müsste man wissen wie der Baum aufgebaut wird.
Am besten du machst man ein KSKB - oft kommt man dann sogar selbst auf den Fehler.
 
Hi Michael...
danke für deine Antwort.
Es scheint als hätte ich das Problem gelöst 🙂
Anstatt eines KSKB's habe ich den gesamten Code nochmal gründlich debuggt und den FileFilter in kleinen Schritten komplett überarbeitet.
Was ich direkt geändert habe kann ich nicht sagen aber jedenfall funktioniert es jetzt.
Eigentlich hätt es auch vorher funktionieren müssen (habs ja zuvor auch mehrmals debuggt). Anscheinend sinds immer die kleinen Fehler die einen in den Wahnsinn treiben 😉

Gruß
N4pst3r

EDIT: Ich denke mal nicht das hier der neue Code benötigt wird - ich kann das Problem ja nicht ausgrenzen... deshalb:
>Done<
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben