eine CSV-Datei aus vielen laden

So, so müsste dein ListModel aussehen. Ein ListModel hat Methoden die überschrieben werden müssen.

Java:
class CVSListModel
      extends AbstractListModel
  {
    private ArrayList<File> list = null;

    private ArrayList<File> getFileList()
    {
      if (list == null)
      {
        File file = new File("");
        File path = new File(file.getAbsolutePath());
        list = new ArrayList<File>();

        File[] children = path.listFiles();

        for (File f : children)
        {
          if (f.getName().endsWith(".cvs"))
            list.add(f);
        }
      }
      return list;

    }

    public Object getElementAt(int index)
    {
      return getFileList().get(index).getName();
    }

    public int getSize()
    {
      return getFileList().size();
    }

  }
 
Sorry, aber ich stehe gerade voll auf dem Schlauch. Wie lese ich die Daten nun in meine JList ein?
Ich hab da mal so angefangen:

Java:
	private JList getJListDateien() {
		if (jListDateien == null) {
			jListDateien = new JList();
			jListDateien.setBounds(new Rectangle(20, 47, 150, 364));
			
			MyListModel listenModell = new MyListModel();
			
			for(int i = 0; i < listenModell.getSize(); i++)
			{
				Object alleElemente = listenModell.getElementAt(i);
			}
			
			jListDateien.setModel(listenModell);
		}

		return jListDateien;
	}
 
Du hast jetzt nicht mehr MyListModel sondern CVSListModel, d. h.
Java:
JList list = new JList(new CVSListModel());

Mehr brauchst du nicht zu tun, den Rest erledigt das Model, was ich vorhin gepostet habe.


MFG

zEriX
 
Danke für deine Antworten. Leider funktioniert es immer noch nicht.

ich habe mal als Debug-Element folgendes eingebaut:
Java:
			for (File f : children)
			{
				if (f.getName().endsWith(".cvs"))
	            list.add(f);
				else System.out.println("Keine Datei vorhanden");
	        }

Die Fehlermeldung wird mehrmals ausgespuckt. Ich habe die Datei bereits überall in meinen Projektordner hinkopiert. An was liegt es denn diesmal?
 
Könntest du dann mal die Fehlermeldung posten?
Ohne Fehlermeldung ist schlecht irgendwas zu sagen.
 
Die von mir generierte wird auf der Konsole ausgegeben:
"Keine Datei vorhanden"

Hier nochmal der Quellcode:
Java:
package de.technidata.gui;

import java.io.File;
import java.util.ArrayList;

import javax.swing.AbstractListModel;

public class CSVListModel extends AbstractListModel
{
	private static final long serialVersionUID = 1L;
	
	private ArrayList<File> list = null;
	
	private ArrayList<File> getFileList()
	{
		if (list == null)
		{
			File file = new File("");
			File path = new File(file.getAbsolutePath());
			
			list = new ArrayList<File>();
			File[] children = path.listFiles();
	
			for (File f : children)
			{
				if (f.getName().endsWith(".cvs"))
	            list.add(f);
				else System.out.println("Keine Datei vorhanden");
	        }
	    }
	    return list;
	}
	
    public Object getElementAt(int index)
    {
    	return getFileList().get(index).getName();
    }
    
    public int getSize()
    {
    	return getFileList().size();
    }
}

und hier der Aufruf:
Java:
	private JList getJListDateien() {
		if (jListDateien == null) 
		{
			// Aufruf des ListenModells
			jListDateien = new JList(new CSVListModel());
			jListDateien.setBounds(new Rectangle(20, 47, 150, 364));
		}
		return jListDateien;
	}
 
Zuletzt bearbeitet:
Lass dir mal die Dateien ausgeben die nicht in die Liste geschrieben werden.
Ich hab den Verdacht, dass er sich im falschen Verzeichnis befindet.
 
Oh oh, ganz übler Fehler!

falsch:
Java:
if (f.getName().endsWith(".cvs"))
richtig:
Java:
if (f.getName().endsWith(".csv"))

Jetzt gehts, danke nochmal für deine Hilfe!
 
Ups, da hab ich mich wohl vertippt :-)

Wenn du aus dem AbstractListModel ein DefaultListModel machst und noch Methoden überschreibst (z.b. get()) kanns du dir aus der ArrayList File-Objecte geben lassen, da hast du es dann nochmal einfacher.


MFG

zEriX
 
Zurück