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:
und hier nochmal der relevante Code vom JTree (von Kirill Grouchnikov), wo der FileFilter eingesetzt wird:
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
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