G
Gelöschtes Mitglied 35125
Gast
hey leute nachdem sich mein erstes problem von alleine
) gelöst hat hab ich auch gleich das nächste. und zwar geht es diesmal um die filterung von bestimmten dateiendungen so dass nur diese im jtree angezeigt werden. hier mein code bis jetzt:
alles klappt, nur wenn der jtree ausgegeben wird dann sehe ich keine dateien, nur das root verzeichnis das ich vorher ausgewählt habe. wenn ihr mir noch ein tipp geben könntet wie ich nur die dateiendungen rausfiltern lassen könnte die ich vorher in ein array gepackt habe wäre das perfekt.
hier das interface dass die konstanten enthält:
Code:
package dateibaum;
import java.io.File;
import java.io.FileFilter;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
public class DateiBaum extends JFrame implements TreeSelectionListener
{
//Konstruktor
JTree baum;
public DateiBaum(File file)
{
DefaultMutableTreeNode wurzel = new DefaultMutableTreeNode(file);
baumAusgeben(file, wurzel);
//Tree-Komponente erzeugen
baum = new JTree(wurzel);
baum.addTreeSelectionListener(this);
//Ebene mit Scrollbalken zur Anzeige des JTree erzeugen
JScrollPane treePane = new JScrollPane(baum);
//diese der Inhalts-Ebene des JFrame hinzufügen
this.getContentPane().add(treePane);
//Fenster initialisieren
this.setTitle("DateiBaum");
this.setSize(500, 500);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}//Ende Konstruktor
//Rekursive Methode zum Aufbau des Datenmodells für den JTree
private void baumAusgeben(File file, DefaultMutableTreeNode ast)
{
DefaultMutableTreeNode blatt = new DefaultMutableTreeNode(file.getName());
if (file.getName().endsWith(".jpg"))
{
ast.add(blatt);
}
if (file.isDirectory())
{
File verzeichnisInhalt[] = file.listFiles();
if (verzeichnisInhalt != null)
for (int i = 0; i < verzeichnisInhalt.length; i++)
baumAusgeben(verzeichnisInhalt[i], blatt);
}
}//Ende der Methode baumAusgeben
//Methode des TreeSelectionListeners
public void valueChanged(TreeSelectionEvent e)
{
Object[] geklickt = baum.getSelectionPath().getPath();
int anzahl = geklickt.length;
String text = "Geklickt auf: " + geklickt[anzahl - 1];
for (int i = anzahl - 2; i >= 0; i--)
text += "\n" + geklickt[i];
JOptionPane.showMessageDialog(rootPane, text);
}
public static void main(String[] args)
{
DateiBaum dateiBaum = new DateiBaum(VerzeichnisAuswahl.getFile("Einlesen"));
dateiBaum.setVisible(true);
}
}
Code:
package dateibaum;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import konstanten.Konstanten;
/**
* Die Klasse Dateiauswahl stellt ein Dialog zur Auswahl eines
* root-Verzeichnisses zur Verfügung.
*
*/
public class VerzeichnisAuswahl implements Konstanten
{
public static File getFile(String titel)
{
//Dialog zum Auswählen des Root-Verzeichnisses
JFileChooser fc = new JFileChooser(titel);
//nur Verzeichnisse anzeigen lassen
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setAcceptAllFileFilterUsed(false);
//Extensions-Array auf Auswahl-Dialog anwenden
//FileNameExtensionFilter filter_all = new FileNameExtensionFilter("alle Bild Dateien", Konstanten.extensions);
//FileNameExtensionFilter filter_gif = new FileNameExtensionFilter("gif-Dateien", "gif");
//FileNameExtensionFilter filter_jpeg = new FileNameExtensionFilter("jpeg-Dateien", "jpeg");
//fc.setFileFilter(filter_all);
//fc.setFileFilter(filter_gif);
//fc.setFileFilter(filter_jpeg);
fc.setDialogTitle("Root-Verzeichnis auswählen");
int antw = fc.showDialog(null, titel);
//falls auf Abbrechen geklickt
if (antw == JFileChooser.CANCEL_OPTION)
{
return null;
}
return fc.getSelectedFile();
}
}
alles klappt, nur wenn der jtree ausgegeben wird dann sehe ich keine dateien, nur das root verzeichnis das ich vorher ausgewählt habe. wenn ihr mir noch ein tipp geben könntet wie ich nur die dateiendungen rausfiltern lassen könnte die ich vorher in ein array gepackt habe wäre das perfekt.
hier das interface dass die konstanten enthält:
Code:
package konstanten;
/**
* Das Interface Konstanten stellt Konstanten für die Anwendung bereit.
*
*/
public interface Konstanten
{
//Dateiendungen in Array packen
final String extensions[] = {"jpeg", "gif", "bmp"};
}